首页(162) xml(5) spring(1) 生活(8) java(70) 代码(10) 英语(4) 数据库(7) c#(14) 成长(10) 软件工程(27)  写新日志
 
 

玻璃杯中的花生壳

  真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。
   不要找任何理由,  当幸福在你身边的时候就抓住它,你就一定会很幸福! 
   

时 间 记 忆
«September 2025»
123456
78910111213
14151617181920
21222324252627
282930

最 新 评 论
回复:xml的Jdom解析过程详解
回复:突然想到的几句话!
 Boyle came out of n
回复:xml的Jdom解析过程详解
回复:配置Spring数据源
回复:使用SAX解析XML
回复:java中写文件操作时FileOu
回复:关联和依赖关系的区分
回复:HttpSessionListen
回复:Spring AOP四种创建通知(

最 新 日 志
Java开发者的十大戒律
配置Spring数据源
java多线程设计模式
java中switch的使用
性格,编码,测试
突然想到的几句话!
理解Spring AOP中的关键概念
Spring AOP四种创建通知(拦截器
xml的四种解析方法 比较 sax,do
xml的Jdom解析过程详解

最 新 留 言
签写新留言

我渴望知识
很好的东东
帖子不错,道声谢
想拜师学艺
我的呼喊

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

模板设计:部落窝模板世界

blog名称:玻璃杯中的花生壳
日志总数:162
评论数量:249
留言数量:1
访问次数:827318
建立时间:2004年11月4日
 
 
 
[代码]发帖数: 613
[ 2006/9/5 11:28:08 | By: 玻璃杯中的花生壳 ]
 
 package com.mypackage; 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(contype.toLowerCase().indexOf("application") != -1) attachflag=true;                     if(contype.toLowerCase().indexOf("name") != -1) attachflag=true;                 }             }         }else if(part.isMimeType("message/rfc822")){             attachflag = isContainAttach((Part)part.getContent());         }         return attachflag;     }          /**      * 【保存附件】      */     public void saveAttachMent(Part part)throws Exception{         String fileName = "";         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)))){                     fileName = mpart.getFileName();                     if(fileName.toLowerCase().indexOf("gb2312") != -1){                         fileName = MimeUtility.decodeText(fileName);                     }                                         saveFile(fileName,mpart.getInputStream());                 }else if(mpart.isMimeType("multipart/*")){                     saveAttachMent(mpart);                 }else{                     fileName = mpart.getFileName();                     if((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1)){                         fileName=MimeUtility.decodeText(fileName);                         saveFile(fileName,mpart.getInputStream());                     }                 }             }         }else if(part.isMimeType("message/rfc822")){             saveAttachMent((Part)part.getContent());         }     }          /**      * 【设置附件存放路径】      */     public void setAttachPath(String attachpath){         this.saveAttachPath = attachpath;     }          /**      * 【设置日期显示格式】      */     public void setDateFormat(String format)throws Exception{         this.dateformat = format;     }          /**      * 【获得附件存放路径】      */     public String getAttachPath(){         return saveAttachPath;     }          /**      * 【真正的保存附件到指定目录里】      */     private void saveFile(String fileName,InputStream in)throws Exception{         String osName = System.getProperty("os.name");         String storedir = getAttachPath();         String separator = "";         if(osName == null) osName="";         if(osName.toLowerCase().indexOf("win") != -1){             separator = "\\";             if(storedir == null || storedir.equals("")) storedir="c:\\tmp";         }else{             separator = "/";             storedir = "/tmp";         }         File storefile = new File(storedir+separator+fileName);         System.out.println("storefile's path: "+storefile.toString());         //for(int i=0;storefile.exists();i++){             //storefile = new File(storedir+separator+fileName+i);         //}         BufferedOutputStream bos = null;         BufferedInputStream  bis = null;         try{             bos = new BufferedOutputStream(new FileOutputStream(storefile));             bis = new BufferedInputStream(in);             int c;             while((c=bis.read()) != -1){                 bos.write(c);                 bos.flush();             }         }catch(Exception exception){             exception.printStackTrace();             throw new Exception("文件保存失败!");         }finally{             bos.close();             bis.close();         }     }          /**      * PraseMimeMessage类测试      */     public static void main(String args[])throws Exception{         String host = "主机名/ip";     //【pop.mail.yahoo.com.cn】         String username ="用户名";     //【wwp_1124】         String password ="密码";       //【........】         Properties props = new Properties();         Session session = Session.getDefaultInstance(props, null);         Store store = session.getStore("pop3");         store.connect(host, username, password);         Folder folder = store.getFolder("INBOX");         folder.open(Folder.READ_ONLY);         Message message[] = folder.getMessages();         System.out.println("Messages's length: "+message.length);         PraseMimeMessage pmm = null;         for(int i=0;i<message.length;i++){             pmm = new PraseMimeMessage((MimeMessage)message[i]);             System.out.println("Message "+i+" subject: "+pmm.getSubject());             System.out.println("Message "+i+" sentdate: "+pmm.getSentDate());             System.out.println("Message "+i+" replysign: "+pmm.getReplySign());             System.out.println("Message "+i+" hasRead: "+pmm.isNew());             System.out.println("Message "+i+" containAttachment: "+pmm.isContainAttach((Part)message[i]));             System.out.println("Message "+i+" form: "+pmm.getFrom());             System.out.println("Message "+i+" to: "+pmm.getMailAddress("to"));             System.out.println("Message "+i+" cc: "+pmm.getMailAddress("cc"));             System.out.println("Message "+i+" bcc: "+pmm.getMailAddress("bcc"));             pmm.setDateFormat("yy年MM月dd日 HH:mm");             System.out.println("Message "+i+" sentdate: "+pmm.getSentDate());             System.out.println("Message "+i+" Message-ID: "+pmm.getMessageId());             pmm.getMailContent((Part)message[i]);             System.out.println("Message "+i+" bodycontent: \r\n"+pmm.getBodyText());             pmm.setAttachPath("c:\\tmp\\coffeecat1124");             pmm.saveAttachMent((Part)message[i]);         }     } }
 

阅读全文(1736) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
部落窝Blog模板世界部落窝Blog模板世界
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.216 second(s), page refreshed 144789724 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号