<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
    很感謝  回復  更多評論
      

    主站蜘蛛池模板: 免费一级毛片女人图片| 国产99久久久久久免费看| 久久ww精品w免费人成| 夜夜春亚洲嫩草影院| 男女猛烈激情xx00免费视频| 国产成人aaa在线视频免费观看 | 亚洲AV无码国产精品色午友在线 | 在线观看免费黄网站| 久久久久无码专区亚洲av| 亚欧国产一级在线免费| 超清首页国产亚洲丝袜| 中文字幕久精品免费视频| 亚洲av无码成人黄网站在线观看 | 24小时免费直播在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 最近2019中文字幕免费直播| 亚洲理论片在线观看| 性做久久久久久久免费看| 亚洲精品色播一区二区| 免费v片在线观看品善网| 国产乱妇高清无乱码免费| 亚洲国产精品无码专区影院 | 成人妇女免费播放久久久| 久久久久无码精品亚洲日韩| 亚洲视频免费在线看| 亚洲欧美日韩中文高清www777| 日日操夜夜操免费视频| jzzjzz免费观看大片免费| 99久久亚洲精品无码毛片| AV免费网址在线观看| 一区二区在线免费视频| 亚洲国产精品一区二区久久| 毛片免费在线视频| 一级毛片完整版免费播放一区| 亚洲av无码一区二区三区网站 | 亚洲最大av资源站无码av网址| 亚洲成aⅴ人片久青草影院| 99热这里只有精品6免费| 亚洲七久久之综合七久久| 亚洲欧洲日产国码无码网站| 色se01短视频永久免费|