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

Using JavaMail how do I do a search and get a Message Array with UIDs I can reference?

所以我想弄清楚如何使用 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。