<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 雪山飛鵠 閱讀(2575) 評論(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
    很感謝  回復  更多評論
      

    主站蜘蛛池模板: 一级毛片免费播放视频| 老司机亚洲精品影院在线观看| 日本高清不卡中文字幕免费| 青青青青青青久久久免费观看| 亚洲一级毛片中文字幕| 免费精品国产日韩热久久| 亚洲人成伊人成综合网久久| 亚洲国产成人久久精品影视| 久操视频在线免费观看| 亚洲天堂在线播放| 999久久久免费精品播放| 久久精品国产亚洲AV无码偷窥 | 一级A毛片免费观看久久精品| 国产一级淫片免费播放电影| 美女裸免费观看网站| 在线观看国产区亚洲一区成人 | 亚欧免费一级毛片| 亚洲美女色在线欧洲美女| 色老头永久免费网站| 亚洲综合激情五月丁香六月| 国产在线ts人妖免费视频| 一区二区三区免费看| 亚洲VA成无码人在线观看天堂| 99在线观看精品免费99| 亚洲人成777在线播放| 国产精品无码素人福利免费| 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲一区无码中文字幕| 人妻无码久久一区二区三区免费| 91亚洲精品麻豆| 国产成人免费手机在线观看视频 | 久久精品国产精品亚洲| 日韩在线不卡免费视频一区| 亚洲国产区男人本色在线观看| 成人亚洲综合天堂| 84pao国产成视频免费播放| 亚洲精品国产高清在线观看| 国内精品久久久久久久亚洲| 黄在线观看www免费看| 日本亚洲中午字幕乱码| 亚洲精品免费在线观看|