分享
 
 
 

用Javamail写的解析MimeMessage的程序

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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<address.length;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") && !conname){

bodytext.append((String)part.getContent());

}else if(part.isMimeType("text/html") && !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<counts;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();

}

/**

* 【判断此邮件是否已读,如果未读返回返回false,反之返回true】

*/

public boolean isNew()throws MessagingException{

boolean isnew = false;

Flags flags = ((Message)mimeMessage).getFlags();

Flags.Flag []flag = flags.getSystemFlags();

System.out.println("flags's length: "+flag.length);

for(int i=0;i<flag.length;i++){

if(flag[i] == Flags.Flag.SEEN){

isnew=true;

System.out.println("seen Message.......");

break;

}

}

return isnew;

}

/**

* 判断此邮件是否包含附件

*/

public boolean isContainAttach(Part part)throws Exception{

boolean attachflag = false;

String contentType = part.getContentType();

if(part.isMimeType("multipart/*")){

Multipart mp = (Multipart)part.getContent();

for(int i=0;i<mp.getCount();i++){

BodyPart mpart = mp.getBodyPart(i);

String disposition = mpart.getDisposition();

if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE))))

attachflag = true;

else if(mpart.isMimeType("multipart/*")){

attachflag = isContainAttach((Part)mpart);

}else{

String contype = mpart.getContentType();

if(conty

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有