知识大全 用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 实现邮件发送

使用JavaMail实现邮件发送  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   im

知识大全 JAVAMAIL邮件服务器

JAVAMAIL邮件服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果你认为没有必要设置

知识大全 JavaMail常见问题之发送邮件问题

JavaMail常见问题之发送邮件问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问我如何回

知识大全 JavaMail发送中文邮件中主题乱码的解决方法

JavaMail发送中文邮件中主题乱码的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 利用javamail和POP3、SMPT协议实现邮件的收发

利用javamail和POP3、SMPT协议实现邮件的收发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 使用javamail自动获取gmail邮件

cha138/Article/program/Java/hx/201311/27160

知识大全 推荐一下高一应该用哪本辅导书比较好,最好每门都有。不要复制,要自己亲身体会的,谢谢了

推荐一下高一应该用哪本辅导书比较好,最好每门都有。不要复制,要自己亲身体会的,谢谢了我今年大四了就读的是个211末流学校,我记得当时高一看得教参是王后雄学案,课前看看写写,课后再做一下后面的习题基本就

知识大全 Java发送邮件

Java发送邮件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记得曾经学习用javamail发

知识大全 用Javamail写的解析MimeMessage的程序

用Javamail写的解析MimeMessage的程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

军训期间,小王同学收到一封《教务通知》的QQ邮件。打开邮箱后,小王发现邮件内有一个带有学校校徽logo的二维码,邮件要求扫描二维码后查看通知内容。在扫描改二维码后,手机界面显示的是腾讯QQ邮箱的登录画

军训期间,小王同学收到一封《教务通知》的QQ邮件。打开邮箱后,小王发现邮件内有一个带有学校校徽logo的二维码,邮件要求扫描二维码后查看通知内容。在扫描改二维码后,手机界面显示的是腾讯QQ邮箱的登录画