知识大全 用javamail显示复合邮件的内容的亲身体会
Posted 内容
篇首语:身体的财富是健康,思想的财富是知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用javamail显示复合邮件的内容的亲身体会相关的知识,希望对你有一定的参考价值。
复合邮件 既含图片又含正文 一般是格式显示 简单理解的话 就是非常漂亮的那种邮件 (个人注解 不很全面) 当我们需要做一个收取邮件的程序时 我们该如何去显示复合邮件的内容呢?(原问题见 专家门诊 ) 今天我将我得一点心得写出来 希望后来者能够少走弯路 当然也希望同志多加指正 首先 我们需要从folder中得到一个message对象 这一步不难实现 可以参看很多例子 当我们得到这个message对象后 下一步就是去显示他的内容了 在这部分开始前 首先需要简要介绍一下mimetype的几个重要类型 text/ texl/plain multipart/alternative multipart/related 前两个不必多介绍 一个是格式的正文 一个是无格式正文 如果你的message对象是这两个mimetype的一种的话 那么你的邮件就不是multipart的邮件 你就可以直接去显示他们 如下 Object o = m getContent(); if (m isMimeType( text/plain )||m isMimeType( text/ )) s=+(String)o+
; return s; s为要返回的内容字符串 m为message对象 如果你的message对象是后两种的话 就说明你的邮件是multipart的 需要做一些处理和判断才能正常显示内容 如果message是multipart 只要得到multipart的各个部分(part)的内容 则整个message的内容就得到了 if (m isMimeType( multipart/* ) Multipart mp = (Multipart)o; int cnt = mp getCount(); for (int i = ; i < cnt; i++) w=w+""+getPart(mp.getBodyPart(i), i, 2,x); getPart 是得到part内容的方法。tW.WINgWIt.Com 那没如何得到part得内容呢? 这里有一点要强调,并非得到part对象后,调用part.getContent()就能得到part的内容。当初我就是在这里被卡住了。为什么呢?原因是: 理论上的指明内容第一个part,既不是一个text/plain类型,也不是一个text/类型。所以,第15行是永远不成立的。后来经过研究发现,指明内容的第一个part又是一个multipart类型。也就是说,这个邮件可分为多个部分,正文和图片等,而正文部分又可以分为多个部分,如plain的正文和的正文。这样,就象一个树。只有到达叶子时,你才能知道它时plain还是。因此,我们在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参数来确定是以格式显示还是以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/")||ct.match("text/plain")) // display text/plain inline s1=""; 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 ); */ if(part isMimeType( multipart/alternative )) String s = ; String s = ; Multipart mp = (Multipart)part getContent(); int count = mp getCount(); for (int i = ; i < count; i++) if(mp.getBodyPart(i).isMimeType("text/plain")) s7=getPart(mp.getBodyPart(i), i, 3,2); if(mp.getBodyPart(i).isMimeType("text/")) s6=getPart(mp.getBodyPart(i), i, 3,1); if(x==1)s5=s6; if(x==2)s5=s7; return s5; s=s1+s2; return s; 希望大家探讨。 cha138/Article/program/Java/JSP/201311/19214相关参考
使用JavaMail实现邮件发送 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! im
JAVAMAIL邮件服务器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果你认为没有必要设置
JavaMail常见问题之发送邮件问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问我如何回
JavaMail发送中文邮件中主题乱码的解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
知识大全 利用javamail和POP3、SMPT协议实现邮件的收发
利用javamail和POP3、SMPT协议实现邮件的收发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
cha138/Article/program/Java/hx/201311/27160
知识大全 推荐一下高一应该用哪本辅导书比较好,最好每门都有。不要复制,要自己亲身体会的,谢谢了
推荐一下高一应该用哪本辅导书比较好,最好每门都有。不要复制,要自己亲身体会的,谢谢了我今年大四了就读的是个211末流学校,我记得当时高一看得教参是王后雄学案,课前看看写写,课后再做一下后面的习题基本就
Java发送邮件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 记得曾经学习用javamail发
知识大全 用Javamail写的解析MimeMessage的程序
用Javamail写的解析MimeMessage的程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
军训期间,小王同学收到一封《教务通知》的QQ邮件。打开邮箱后,小王发现邮件内有一个带有学校校徽logo的二维码,邮件要求扫描二维码后查看通知内容。在扫描改二维码后,手机界面显示的是腾讯QQ邮箱的登录画
军训期间,小王同学收到一封《教务通知》的QQ邮件。打开邮箱后,小王发现邮件内有一个带有学校校徽logo的二维码,邮件要求扫描二维码后查看通知内容。在扫描改二维码后,手机界面显示的是腾讯QQ邮箱的登录画