javamail写的解析MimeMessage的程序
来源:Linuxdby.com
作者:Webmaster
时间:2007-05-31
点击:
[
收藏] [
投稿]
自从上次在论坛发表了用JavaMail来发送邮件的程序以后,一直忙于学校里面的事情,没有时间静下心来写接收邮件的程序,现在学校里的事情终于忙完了,可以静下心里做自己喜欢做的事情了,这种感觉真的很好! 对我自己而言,刚开始在用JavaMail来编写收邮件的程序时最重要和最难的要数解析附件和邮件正文的部分,因为Mime类型实在是太多了!下面的这段代码是我自己学习JavaMail的一段体会,供大家来参考(请高手指教,有什么更好的办法,请回复此文章),具体代码如下: ------------------------------------------------------------------------------- package coffeecatwebmail;
import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*;
public class PraseMimeMessage{ private MimeMessage mimeMessage = null; private String saveAttachPath = ""; //附件下载后的存放目录 private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象 private String dateformat = "yy-MM-dd HH:mm"; //默认的日前显示格式
/** * 构造函数,初始化一个MimeMessage对象 */ public PraseMimeMessage(){} public PraseMimeMessage(MimeMessage mimeMessage){ this.mimeMessage = mimeMessage; System.out.println("create a PraseMimeMessage object........"); }
public void setMimeMessage(MimeMessage mimeMessage){ this.mimeMessage = mimeMessage; }
/** * 获得发件人的地址和姓名 */ public String getFrom()throws Exception{ InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom(); String from = address[0].getAddress(); if(from == null) from=""; String personal = address[0].getPersonal(); if(personal == null) personal=""; String fromaddr = personal+"<"+from+">"; return fromaddr; }
/** * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同 * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址 */ public String getMailAddress(String type)throws Exception{ String mailaddr = ""; String addtype = type.toUpperCase(); InternetAddress []address = null; if(addtype.equals("TO") || addtype.equals("CC") ||addtype.equals("BCC")){ if(addtype.equals("TO")){ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO); }else if(addtype.equals("CC")){ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC); }else{ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC); } if(address != null){ for(int i=0;i String email=address[i].getAddress(); if(email==null) email=""; else{ email=MimeUtility.decodeText(email); } String personal=address[i].getPersonal(); if(personal==null) personal=""; else{ personal=MimeUtility.decodeText(personal); } String compositeto=personal+"<"+email+">"; mailaddr+=","+compositeto; } mailaddr=mailaddr.substring(1); } }else{ throw new Exception("Error emailaddr type!"); } return mailaddr; }
/** * 获得邮件主题 */ public String getSubject()throws MessagingException{ String subject = ""; try{ subject = MimeUtility.decodeText(mimeMessage.getSubject()); if(subject == null) subject=""; }catch(Exception exce){ } return subject; }
/** * 获得邮件发送日期 */ public String getSentDate()throws Exception{ Date sentdate = mimeMessage.getSentDate(); SimpleDateFormat format = new SimpleDateFormat(dateformat); return format.format(sentdate); }
/** * 获得邮件正文内容 */ public String getBodyText(){ return bodytext.toString(); }
/** * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件 * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析 */ public void getMailContent(Part part)throws Exception{ String contenttype = part.getContentType(); int nameindex = contenttype.indexOf("name"); boolean conname =false; if(nameindex != -1) conname=true;
System.out.println("CONTENTTYPE: "+contenttype); if(part.isMimeType("text/plain") %26amp;%26amp; !conname){ bodytext.append((String)part.getContent()); }else if(part.isMimeType("text/html") %26amp;%26amp; !conname){ bodytext.append((String)part.getContent()); }else if(part.isMimeType("multipart/*")){ Multipart multipart = (Multipart)part.getContent(); int counts = multipart.getCount(); for(int i=0;i getMailContent(multipart.getBodyPart(i)); } }else if(part.isMimeType("message/rfc822")){ getMailContent((Part)part.getContent()); }else{} }
/** * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false" */ public boolean getReplySign()throws MessagingException{ boolean replysign = false; String needreply[] = mimeMessage.getHeader("Disposition-Notification-To"); if(needreply != null){ replysign = true; } return replysign; }
/** * 获得此邮件的Message-ID */ public String getMessageId()throws MessagingException{ return mimeMessage.getMessageID(); }
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:用ASP判断Email地址是否有效 下一篇:javamail发送邮件
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】
更多相关文章
|
|