[英]How do I uniquely identify a Java Mail Message using IMAP?
Java Mail 中的 IMAP 消息由其相对位置编号标识,该编号从 1 开始。
参考, http://docs.oracle.com/javaee/1.4/api/javax/mail/Message.html#getMessageNumber ()
消息号是一个临时的细节。
有没有办法永久唯一标识通过 IMAP 访问邮箱的邮件/消息,该邮件/消息使用跨会话适用的 Java 邮件 API?
查看 UIDFolder 接口,它公开了 IMAP UID 功能。
您可以使用以下代码作为示例获取消息的唯一标识符
Folder folder = imapStore.getFolder("INBOX"); // get reference for inbox folder
UIDFolder uf = (UIDFolder)folder; // cast folder to UIDFolder interface
folder.open(Folder.READ_ONLY); // open folder
Message messages[] = folder.getMessages(); // get all messages
Long messageId = uf.getUID(messages[0]); // get message Id of first message in the inbox
添加这个是因为我认为这会有所帮助
如果您想遍历消息并获取 uid,则上述代码无法获得性能,因为您必须循环获取 uid,使用消息获取该信息的简单方法如下
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
UIDFolder uf = (UIDFolder)emailFolder;
Message messages[] = emailFolder.getMessages();
FetchProfile profile = new FetchProfile();
//profile.add(FetchProfile.Item.ENVELOPE);
profile.add(FetchProfile.Item.FLAGS);
//profile.add(FetchProfile.Item.CONTENT_INFO);
profile.add(UIDFolder.FetchProfileItem.UID);
emailFolder.fetch(messages, profile);
这将获得带有 uid 的消息
在此之后,如果您循环并执行 uf.getUID(messages[i]); 你会得到 uid 但这次它会更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.