2016-04-11 52 views
0

当我收到邮件时,打开收件箱并收到邮件;我如何将它们与以前的一组消息进行比较,以便我知道其中哪些已阅读?Java邮件:如何识别新邮件

Properties properties = new Properties(); 
properties.put("mail.imaps.host", host); 
properties.put("mail.imaps.port", "993"); 
Session emailSession = Session.getDefaultInstance(properties); 

//2) create the POP3 store object and connect with the pop server 
Store emailStore = emailSession.getStore("imaps"); 
emailStore.connect(user,pw); 

//3) create the folder object and open it 
Folder emailFolder = emailStore.getFolder("INBOX"); 
emailFolder.open(Folder.READ_ONLY); 
Message[] messages = emailFolder.getMessages(); 
+0

相信,你需要保存以前的消息?您从收件箱中读取消息作为事件。所以,你总是读一条新消息,然后你不会再读同一条消息两次。 –

+0

以及我的应用程序显示(一些)的邮件。如果我从该列表中删除一封邮件,我不希望它在我刷新文件夹时重新出现,但我再次收到所有邮件。 当然,我可以比较日期,从,主题等,但有没有办法确保消息是否已包含在我上次收到的消息中? – Ginso

回答

0

如何处理这取决于您的要求是什么。例如,其他应用程序和/或用户是否将与您的应用程序同时访问邮箱?或者您的应用程序是否有专门的邮箱访问权?

您可以use the SEEN flag to find messages that you haven't already read

您还可以保存处理的最后一条消息(以及该文件夹的UIDVALIDITY)的IMAP UID,以便稍后查找具有较大UID的消息。有关详细信息,请参阅UIDFolder界面。

(在你的代码说一说弹出的意见,但你的代码使用IMAP;如果你必须使用POP3协议的answers are quite different。)

+0

坦克,UID是,我在找什么。我只是没有想法查看文件夹,并且Message本身只给出一个messagenumber,如果文件夹的内容发生变化,可以“重新分配”它。但我想,如果消息被删除,那么UID将不会被重用 – Ginso

相关问题