java - 使用 JavaMail 如何进行搜索并获取带有我可以引用的 UID 的消息数组?

标签 java jakarta-mail imap uid

所以我想弄清楚如何获取带有 UID 的消息

IMAPStore store = (IMAPStore) session.getStore("imaps");
store.connect();
IMAPFolder folder = (IMAPFolder) store.getFolder(FOLDER_NAME);
folder.open(Folder.READ_ONLY);

然后我要搜索该文件夹:

Message unreadMessages[] = 
    folder.search(new FlagTerm( new Flags(Flags.Flag.SEEN), false));

但是数组中的消息返回时没有 UID,那么如果没有 ID 来引用它们,我如何稍后将它们拉出来进行处理呢?

最佳答案

我假设您正在谈论 IMAP UID 并且您知道 IMAP UID 的工作原理。被删除的答案很好地解释了这一点。 Folder.search 为您提供了一堆 Message 对象。使用 UIDFolder.getUID 方法,您可以迭代每个 Message 对象并获取其相应的 UID。使用Folder.fetch方法,您可以使用单个IMAP命令预取这些UID,以便在本地进行每条消息的迭代以获取其UID。如果保存 UID,则稍后可以使用 UIDFolder 方法取回相应的 Message 对象。不要忘记检查 UIDVALIDITY。

关于java - 使用 JavaMail 如何进行搜索并获取带有我可以引用的 UID 的消息数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38714841/

相关文章:

java - 选择哪个 JVM 进行 GC 攻击?

java - JPanel 某些区域的 BalloonTip

java - 将 JProgressBar 与 Java Mail 结合使用(了解 Transport.send() 之后的进度)

java - 连接到 imap 服务器并处理根文件夹的内容

coldfusion - 使用 Coldfusion 7 从 imap 服务器获取电子邮件

php - 在 Ubuntu 11 上安装带有 IMAP/Kerberos 支持的 PHP 时出现问题

java - 线程 "main"java.lang.SecurityException : Prohibited package name: java. sql 中的异常

java - 需要使用 Junit 测试 MailService

php - 如何在php中从服务器webmail获取未读消息

java - Java 中异常的速度