JavaMail讀取最新郵件
阿新 • • 發佈:2018-11-07
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了。