http://www.yesky.com/20010323/166128_2.shtmlhttp://www.yesky.com/20020424/1608502_4.shtml
自己看,记得给分
自己看,记得给分
解决方案 »
- hibernate多表查询 iterate读取的问题
- 50分请问怎么在jsp内向本页传多个值?
- 到底什么是serverlet啊?能不能打个形象的比方啊?谢谢!(它和JAVABEAN有什么区别啊?是不是就是JAVABEAN啊?)
- 100分,关于简单的jsp中的基础问题?谢谢!!
- 古老的错误:jsp调用sqlserver,在线等
- 显示validator的错误信息怎么显示的?
- 急求servlet编写连接池一份,急急急
- 要对JSP进行单元测试,请问有什么方法去测试?
- 讨论在JSP中传递参数的方法,(在线等候,高分相送):) :) ;)
- struts2 中使用dojo时间控件dropdowndatepicker 不显示
- 关于CA的申请问题
- 一个关于终止jsp页面执行的问题!!!
你給的鏈接資料我也有,不過,還是謝謝你的支持.網上大多只介紹發郵件的,很少有收郵件及相關列表的問題.進來的隨便UP一下.
-----我是根据message[i]中的[i]来获得邮件内容的.
還有,在列郵件列表時,為什麼有時通過message[i].getFrom()[0]只顯示一個名稱 而不是完整的郵件地址?
-----得到的形势是这样的"名称<[email protected]>"由于"<[email protected]>"在IE的解析中被认为是附加标记,所以不会显示.
怎樣知道郵件中含有附件?
附件的存取方式是怎樣的?
------
下面方法详细的说明了怎样判断邮件是否含有附件和附件的存取方法,请仔细研究!
public synchronized Vector getAtta(Message message)
{
try
{
Vector v_atta=new Vector();//用于存贮附件保存的路径和文件名
String Content="";
String[] fileName = null;
InputStream[] inputStream = null;
Object o = message.getContent(); //当Message对象含有附件时,其内容会以Multipart的形式存在
if (o instanceof String)
{
//return null;
//不含附件
}
else if (o instanceof Multipart)
{
//可能含有附件
//以Multipart的getBodyPart方法取得内容部分,并以getDisposition方法取得邮件的配置 Multipart mp = (Multipart) o;
fileName = new String[mp.getCount()];
inputStream = new InputStream[mp.getCount()];
OnlineEdit oe=new OnlineEdit();
String Online_ID=oe.getOnline_ID();
for (int i = 0, n = mp.getCount(); i < n; i++)
{
Part part = mp.getBodyPart(i);
if (i == 0)
{
Content = part.getContent().toString();
}
String disposition = part.getDisposition();
//判断Multipart中是否含有附件的方法.则是依据getDisposition所返回的内容
if ( (disposition != null) &&
(disposition.equals(Part.ATTACHMENT) ||
disposition.equals(Part.INLINE)))
{
fileName[i] = part.getFileName();
System.out.println(fileName[i]);
fileName[i] = fileName[i].valueOf(i) +
fileName[i].substring(fileName[i].indexOf("."),
fileName[i].length());//更换文件名
fileName[i]="E"+Online_ID+fileName[i];
//System.out.println(fileName[i]);
inputStream[i] = part.getInputStream();
System.out.println(inputStream[i].toString());
PropPath pp=new PropPath(); String pathName ="\\Atta";
pathName=pp.getAppPath(pathName);
////////////////存贮附件保存的路径和文件名
v_atta.add(pathName + fileName[i]);
////////////////
File file = new File(pathName + fileName[i]);
FileOutputStream outfile = new FileOutputStream(file);
BufferedInputStream br = new BufferedInputStream(inputStream[i]);
BufferedOutputStream bw = new BufferedOutputStream(outfile); int b;
while ( (b = br.read()) != -1)
{
bw.write(b);
}
bw.flush();
outfile.close();
}
}
}
Vector V_res=new Vector();
V_res.add(fileName);
V_res.add(Content);
V_res.add(v_atta);
return V_res;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
Multipart mp = (Multipart)message[n].getContent();
Part part = mp.getBodyPart(i);
String szBody=part.getContent().toString();為什麼用又下面幾條語句都不能實現郵件正文分行?
szBody.replaceAll("\n\r","<br>");
szBody.replaceAll("\r\n","<br>");
szBody.replaceAll("\r","<br>");
szBody.replaceAll("\n","<br>");
szBody=szBody.replaceAll("\r\n","<br>"); //就可以實現換行
.........
Folder folder = store.getFolder("INBOX"); //Get folder
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
Multipart mp = (Multipart)message[nid].getContent(); //nid是指第xxx封郵件的索引
String szFile="";
File ffile;String szpath=application.getRealPath("/")+szUser+ "/tmp"; //附件存盤的位置
String szTmp="";
ffile = new File(szpath);
if(!ffile.exists()) ffile.mkdir();
for (int i=0,n=mp.getCount(); i<n; i++) {
Part part = mp.getBodyPart(i);
String disposition = part.getDisposition();
if((disposition != null) && ((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))){
szFile=MimeUtility.decodeText(part.getFileName()); //取得文件名
szTmp=szFile;
ffile = new File(szpath + "/" + szFile); FileOutputStream outfile = new FileOutputStream(ffile);
BufferedInputStream br = new BufferedInputStream(part.getInputStream());
BufferedOutputStream bw = new BufferedOutputStream(outfile);
int b;
while ((b = br.read()) != -1) bw.write(b);
bw.flush();
szAttach=szAttach+"<br><a href='../webmail/" + szUser +"/tmp/"+ szTmp + "'>" + szTmp + "</a>"; //附件及鏈接地址
}else{
szBody=part.getContent().toString();
szBody=szBody.replaceAll("\r\n","<br>"); //將回車符轉為換行符
}
上面的代碼,附件都能常顯示,但正文內容有些問題為什麼
szBody=part.getContent().toString();這句在顯示郵件正文內容有時能正常顯示,有時卻顯示為javax.mail.internet.MimeMultipart@20807c
甚至出現錯誤?
{
String w;
String s="";
String s1="";
String s2="";
String s3="";
String s4="";
String s5=""; String sct=part.getContentType(); if(sct==null)
{
s="part无效";
return s;
} ContentType ct=new ContentType(sct);
if(ct.match("text/plain")||ct.match("text/html"))
{
s1=(String)part.getContent();
return s1;
}
else if(partNum!=0)
{
return null;
} if(part.isMimeType("multipart/alternative"))
{
String s6="";
String s7="";
Multipart mp1=(Multipart)part.getContent();
int count =mp1.getCount();
for(int k=0;k<count;k++)
{
if(mp1.getBodyPart(k).isMimeType("text/plain"));
s7=GetPart(mp1.getBodyPart(k),k,3,2);
if(mp1.getBodyPart(k).isMimeType("text/html"));
s6=GetPart(mp1.getBodyPart(k),k,3,1);
} if(x==1){s5=s6;}
if(x==2){s5=s7;}
return s5; }
s=s1;
return s;
}public String GetContent(Folder folder,int k)
{
try{
String content=null;
Message message[]=folder.getMessages();
Object o=message[k].getContent();
if(message[k].isMimeType("text/plain")||message[k].isMimeType("text/html"))
{
content=message[k].getContent().toString() + "ok";
return content;
} else
{ Multipart mp=(Multipart)o;
int cnt=mp.getCount();
String w=null;
for(int j=0;j<cnt;j++)
{ w=w + GetPart(mp.getBodyPart(j),j,3,0);
} content=w;
return content;
} // return content;
}
catch(Exception wyex7)
{
System.out.println(wyex7);
return null;
}
}public String GetPart1(Part part,int partNum,int msgNum,int x) throws MessagingException,IOException
{
String w;
String s="";
String s1="";
String s2="";
String s3="";
String s4="";
String s5=""; String sct=part.getContentType(); if(sct==null)
{
s="part无效";
return s;
} ContentType ct=new ContentType(sct);
if(ct.match("text/plain")||ct.match("text/html"))
{ return null;
}
else if(partNum!=0)
{
String temp="";
if((temp=part.getFileName())!=null)
{
// temp = new String(temp.getBytes("iso-8859-1"),"gb2312");
// Bity m=part.getFileName().getBytes();
temp=MimeUtility.decodeText(temp);
s2="附件:" + temp + " 大小:" + part.getSize();
return s2;
}
} if(part.isMimeType("multipart/alternative"))
{
String s6="";
String s7="";
Multipart mp1=(Multipart)part.getContent();
int count =mp1.getCount();
for(int k=0;k<count;k++)
{
if(mp1.getBodyPart(k).isMimeType("text/plain"));
s7=GetPart(mp1.getBodyPart(k),k,3,2);
if(mp1.getBodyPart(k).isMimeType("text/html"));
s6=GetPart(mp1.getBodyPart(k),k,3,1);
} if(x==1){s5=s6;}
if(x==2){s5=s7;}
return s5; }
s=s2;
return s;
}