繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> Java与XML >> 用javamail显示复合邮件的内容(2)

用javamail显示复合邮件的内容(2)

2004-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:  那没如何得到part得内容呢? 这里有一点要强调,并非得到part对象后,调用part.getContent()就能得到part的内容。当初我就是在这里被卡住了。为什么呢?原因是: 理论上的指明内容第一个part,既不是一个tex...
关键字:javamail 邮件 内容

  那没如何得到part得内容呢?

这里有一点要强调,并非得到part对象后,调用part.getContent()就能得到part的内容。当初我就是在这里被卡住了。为什么呢?原因是:

理论上的指明内容第一个part,既不是一个text/plain类型,也不是一个text/html类型。所以,第15行是永远不成立的。后来经过研究发现,指明内容的第一个part又是一个multipart类型。也就是说,这个邮件可分为多个部分,正文和图片等,而正文部分又可以分为多个部分,如plain的正文和html的正文。这样,就象一个树。只有到达叶子时,你才能知道它时plain还是html。因此,我们在part中递归调用本身就解决了问题。

1 public String getPart(Part part, int partNum)

2 throws MessagingException,IOException

3 {

4 String s="";

5 String s1="";

6 String s2="";

7 String s3="";

8 String sct = part.getContentType();

9 if (sct == null)

10 {

11 s="part 无效";

12 return s;

13 }

14 ContentType ct = new ContentType(sct);

15 if (ct.match("text/plain"))

16 {

17 // display text/plain inline

18 s1="

"+(String)part.getContent()+"

";

19 }

20 else

21 {

22 String temp="";

23 if ((temp = part.getFileName()) != null)

24 s2= "Filename: " + temp + "

";

25 temp = null;

26 if ((temp = part.getDescription()) != null)

27 s3= "Description: " + temp + "

";

28 }

29 s=s1+s2+s3;

30 return s;

31 }

下面是经过改造的getpart方法(很粗糟,未优化),使用它能够正确显示复合邮件。

public String getPart(Part part, int partNum, int msgNum,int x) throws

MessagingException,IOException

{

String s="";

String s1=""; x参数来确定是以html格式显示还是以plain

String s2="";

String s3="";

String s5="";

String sct = part.getContentType();

if (sct == null)

{

s="part 无效";

return s;

}

ContentType ct = new ContentType(sct);

if (ct.match("text/html")||ct.match("text/plain"))

{

// display text/plain inline

s1="

"+(String)part.getContent()+"

";

}

else if(partNum!=0)

{

String temp="";

if ((temp = part.getFileName()) != null)

{

s2= "Filename: " + temp + "

";

}

/*

out.println(" HttpUtils.getRequestURL(req) +

"?message=" +

msgNum + "&part=" +

partNum + "">Display Attachment");

*/

}

责任编辑:admin
相关文章