java mail 接受QQ郵箱未讀的郵件

案例代碼以下html

//建立屬性對象
        Properties p = new Properties();
        p.put("mail.imap.auth.login.disable", "true");//身份驗證
        p.put("mail.imap.host", "imap.qq.com");//主機
        p.put("mail.store.protocol", "imap");//協議
        p.put("mail.imap.port", "993");//端口
        //qq郵箱須要ssl加密
        p.put("mail.smtp.socketFactory.port","993");
        p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        
        //建立會話對象
        Session session = Session.getInstance(p);
        //存儲對象
        Store store = session.getStore("imap");
        //連接
        store.connect("2960036795@qq.com", "lylglvicofzodghf");
        
        //建立目錄對象
        Folder folder = store.getFolder("Inbox");
        //打開模式:只讀
        folder.open(Folder.READ_ONLY);
        
        //獲取消息,數組
        Message[] ms = folder.getMessages();
        
        //預提取對象
        FetchProfile fp = new FetchProfile();
        //屬性
        fp.add(FetchProfile.Item.ENVELOPE); 
        //內容
        fp.add(FetchProfile.Item.CONTENT_INFO);
        //標誌屬性
        fp.add(FetchProfile.Item.FLAGS);
        //x-mailer屬性
        fp.add("x-mailer");
        
        //提取
        folder.fetch(ms, fp);
        
        //遍歷
        for(Message m : ms) {
            String title = m.getSubject(); //獲取郵件的標題
            int size = m.getSize(); //獲取郵件的大小
            String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(m.getSentDate());//獲取郵件的接受時間
            
            System.out.println("標題:"+title);
            System.out.println("大小:"+size);
            System.out.println("接受時間:"+date);
            
            Object obj = m.getContent();//獲取郵件內容
            //內容類型判斷
            //村文本內容
            if(m.isMimeType("text/plain") || m.isMimeType("text/html")) {
                System.out.println("內容:"+obj);
            }
            //多個組件內容
            if(m.isMimeType("multipart/*")) {
                //強制轉爲多個組件類型
                Multipart part = (Multipart) obj;
                //遍歷每一個組件
                for(int i=0;i<part.getCount();i++) {
                    //每一個組件內容
                    BodyPart body = part.getBodyPart(i);
                    //判斷組件內容的類型
                    //純文字
                    if(body.isMimeType("text/plain") || body.isMimeType("text/html")) {
                        System.out.println("內容:"+body.getContent());
                    }
                    //附件
                    if(body.isMimeType("application/octet-stream")) {
                        String fileName = body.getFileName(); //獲取附件的文件名
                        fileName = MimeUtility.decodeText(fileName);//解碼
                        
                        //存取當前附件
                        //使用輸入輸出流存儲
                        InputStream is = body.getInputStream();
                        OutputStream os = new FileOutputStream("F:\\yujun\\linshi\\"+fileName);
                        byte[] b = new byte[1024];
                        int len = 0;
                        while((len=is.read(b)) != -1) {
                            os.write(b, 0, len);
                        }
                        is.close();
                        os.close();
                    }
                }
            }
        }

 相關學習資料:http://www.javashuo.com/article/p-euifjxqv-b.htmljava

相關文章
相關標籤/搜索