如何从imap只下载新的电子邮件?

tel*_*bog 7 java imap jakarta-mail

我有一个用于使用imap存档电子邮件的应用程序.此应用程序中还有许多需要存档的imap帐户.

在这个时刻,应用程序不时连接到imap帐户并只下载新的电子邮件.我的问题是,每次连接到imap帐户时,它都会验证来自所有文件夹的所有电子邮件,并仅下载尚未下载的电子邮件(我存储所有电子邮件的Message-ID,并仅下载具有Message-ID的电子邮件)没有存储).所以我想知道是否有替代方案,因为验证所有电子邮件需要一些时间(10-20K需要2-5分钟).

我使用JavaMail API连接到imap帐户.

Eri*_*rik 6

javadoc的帮助:

IMAPFolder提供了以下方法:

getMessagesByUID(长开头,长尾)和

getUID(消息消息)

使用getUID(),您可以获取已下载的最后一条消息的UID.使用getMessagesByUID,您可以将已下载的最后一条消息定义为start-range,并使用方法getUIDNext()查找最后一条消息,该消息将作为范围的结尾.

  • 当邮件从一个文件夹(或"邮箱",在IMAP术语中)移动到另一个文件夹时,邮件UID将更改.["唯一标识符在邮箱中以严格升序的方式分配;当每条消息添加到邮箱时,它被分配的UID高于之前添加的消息."](http://tools.ietf .org/html/rfc3501#section-2.3.1.1)telebog似乎只想下载每条消息一次,无论它在哪个文件夹中. (2认同)