1. 程式人生 > >JavaMail讀取最新郵件

JavaMail讀取最新郵件

                               JavaMail讀取最新郵件

 

轉載:https://blog.csdn.net/yinlei144/article/details/8042675

在多次嘗試和一些網友的討論下終於對這一問題有了一點點心得,寫出來為以後需要用到這個的兄弟行個方便。當然,有疏漏的地方請高手批示。 
1.先說協議。pop3是不支援讀取新郵件的,flag也只能用delete,只能自己手動實現。 
2.想使用flag判斷是否是新郵件,需要使用imap協議:Store store = session.getStore("imap"); 
3.folder需要讀寫,不知道read-only是不是也可以,沒有驗證,folder.open(Folder.READ_WRITE); 
4.要注意一個陷阱!!!就是getMessage(); 
 

Message message[] = folder.getMessages(); //注意這裡!  
for(int i=0;i<message.length;i++){  
    System.out.println(message[i].getFlags().toString());  
    if(message[i].getFlags().toString().equals("[email protected]")){     
        String subject = message[i].getSubject();  
        System.out.println("new mail=  "+subject+"  "+i);     
}  

在第一行,如果你呼叫了getMessages(),在第二次執行程式時就不會出現新郵件!因為呼叫了getMessages(),它就把新郵件讀成了舊郵件。 
所以,第一次執行,輸出的flag會有新的,結果是[email protected],再次執行就全是0了。