<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

    使用javamail接收電子郵件代碼

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Properties;

    import javax.mail.BodyPart;
    import javax.mail.Flags;
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Part;
    import javax.mail.Session;
    import javax.mail.Store;
    import javax.mail.URLName;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeUtility;


    /**   
     * 有一封郵件就需要建立一個ReciveMail對象   
     
    */
    public class ReciveMail {
        
        
    private MimeMessage mimeMessage = null;
        
    private String saveAttachPath = ""//附件下載后的存放目錄    
        private StringBuffer bodytext = new StringBuffer();//存放郵件內容    
        private String dateformat = "yy-MM-dd HH:mm"//默認的日前顯示格式    

        
    public ReciveMail(MimeMessage mimeMessage) {
            
    this.mimeMessage = mimeMessage;
        }

        
    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 {
            
            Properties props 
    = System.getProperties();
            props.put(
    "mail.smtp.host""smtp.163.com");
            props.put(
    "mail.smtp.auth""true");
            Session session 
    = Session.getDefaultInstance(props, null);
            URLName urln 
    = new URLName("pop3""pop3.163.com"110null,
                    
    "xxxxxx""*******");
            Store store 
    = session.getStore(urln);
            store.connect();
            Folder folder 
    = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);
            Message message[] 
    = folder.getMessages();
            System.out.println(
    "您有郵件: "+ message.length+ "");
            ReciveMail pmm 
    = null;
            
    for (int i = 0; i < message.length; i++) {
                System.out.println(
    "==============================第"+(i+1)+"封===========================");
                pmm 
    = new ReciveMail((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:\\ddd");
                pmm.saveAttachMent((Part) message[i]);
            }
        }
    }
    posted on 2010-10-21 11:45 雪山飛鵠 閱讀(2587) 評論(3)  編輯  收藏 所屬分類: javase

    Feedback

    # re: 使用javamail接收電子郵件[轉][未登錄] 2011-02-07 11:27 Jack
    謝謝,幫了我許多忙  回復  更多評論
      

    # re: 使用javamail接收電子郵件[轉][未登錄] 2012-07-06 17:29 Louis
    謝謝,很受用。  回復  更多評論
      

    # re: 使用javamail接收電子郵件[轉] 2012-12-02 19:57 toxicrose
    很感謝  回復  更多評論
      

    主站蜘蛛池模板: 久久久久亚洲国产AV麻豆| 亚洲欧洲在线观看| 亚洲人成网站在线播放2019| 99久久久国产精品免费牛牛| 亚洲欧洲日韩不卡| 亚洲电影在线免费观看| 亚洲精品成人久久| 亚洲视频免费一区| 亚洲日产2021三区| 最近最好的中文字幕2019免费| 亚洲免费在线观看视频| 国内自产少妇自拍区免费| 亚洲狠狠婷婷综合久久蜜芽| 免费v片视频在线观看视频| 人妻巨大乳hd免费看| 亚洲愉拍99热成人精品热久久| 大地资源中文在线观看免费版| 亚洲成人动漫在线| 在线观看无码AV网站永久免费| 亚洲色一区二区三区四区 | 特级av毛片免费观看| 亚洲成av人片一区二区三区| 国产激情久久久久影院老熟女免费| 亚洲色欲色欲www在线丝| 无人在线观看免费高清| 精品亚洲成在人线AV无码| 国产精品酒店视频免费看| 一级中文字幕乱码免费| 一级做a爰片久久免费| 亚洲日韩精品一区二区三区| 亚洲成年人免费网站| 亚洲国产精品嫩草影院 | 亚洲va在线va天堂va888www| 免费在线视频你懂的| 亚洲男同帅GAY片在线观看| 久久99热精品免费观看牛牛| 一本色道久久综合亚洲精品蜜桃冫| 国产在线观看免费视频播放器| 三年片免费高清版 | 四虎精品亚洲一区二区三区| 成av免费大片黄在线观看|