IMAP - JavaMail - 如何知道要处理哪些消息?

时间:2015-03-18 19:23:31

标签: javamail imap

我想要实现的目标:

  • 我正在编写一个Java程序,它使用IMAP每5分钟连接一些gmail帐户,并从某些消息中提取信息。
  • 我想检查所有消息(传入和传出),并只检查我未处理的消息。通过"处理"我并不仅仅意味着"阅读"或"见过"消息。我的应用程序不关心其他用户是否访问过该帐户并阅读邮件。我的应用程序需要跟踪它处理的最后一条消息,并在下次通过消息时,从第一条未处理的消息开始。
  • 我不想更改消息中的任何内容。我不想将它们标记为已阅读或阅读。

我已实施的内容:

  • 建立IMAP连接。
  • 打开并访问" [Gmail] /所有邮件"中的所有邮件文件夹中。

我尝试了什么:

  • 我一直在阅读有关UID和消息编号的内容,但我不确定是否有任何内容可以帮助我实现我想要的内容。也许UID可以,但是:如何使用JavaMail检索它?
  • 我找到了Folder.getMessages(int start,int end),但我认为它指的是文件夹中的消息索引,我相信这很容易改变。

任何人都可以提供一些指导,了解最佳方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

IMAP UID与包含该消息的文件夹相关。我不知道Gmail如何处理" [Gmail] /所有邮件"中的邮件的UID。文件夹,但如果它做对了,您可以使用UIDFolder接口来获取UID。如上所述,一旦您处理了某个UID,所有新消息都将拥有更大的UID,这可以提高处理效率。

另一种方法是使用Message-ID,它有一组不同的问题......