Java Mail中的IMAP消息由其从1开始的相对位置号来标识。
refer,http://docs.oracle.com/javaee/1.4/api/javax/mail/Message.html#getMessageNumber()
消息编号是一个临时的详细信息。
有没有一种方法可以使用Java Mail API永久唯一地识别通过IMAP访问邮箱的邮件/消息?
发布于 2012-07-12 01:38:26
看看UIDFolder接口,它公开了IMAP UID功能。
发布于 2014-06-04 20:56:22
您可以使用以下代码作为示例来获取消息的唯一标识符
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发布于 2020-12-29 03:37:02
添加这个是因为我认为这会有帮助
如果您想循环遍历消息并获取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(messagesi);您将获得uid,但这一次会更快。
https://stackoverflow.com/questions/11435947
复制相似问题