java - Java Mail:从 Message 中获取 UniqueID
问题描述
我需要来自消息对象的uniqueID才能将其保存在我的数据库中。之后,我可以在我的数据库中搜索此 UID,并可以添加其他属性,例如“emailTrackingActive”等。
a) 是否有可能获得电子邮件收件箱的整个 UID,还是总是只针对每个文件夹?目前我得到了这个,你可以在代码中看到。
目前我正在执行以下操作,正如您在代码中看到的那样:发送消息后,我将消息复制到“已发送”文件夹中,然后我想获取 UID 并将其保存在数据库中。
使用“EmailHelperClass”,我得到了商店等。我认为应该很清楚,我不会发布此代码......
private void copyIntoSentAndSaveInDatabase(EmailHelperClass email, final Message msg){
final Store store = email.getMailConfiguration().getWriteStore();
final Folder folder = (Folder) store.getFolder("Sent");
if (folder.exists() == false) {
folder.create(Folder.HOLDS_MESSAGES);
}
folder.open(Folder.READ_WRITE);
folder.appendMessages(new Message[] { msg });
// Get UniqueID
UIDFolder uf = (UIDFolder) folder;
Long messageId = uf.getUID(msg);
// Todo Update in DB etc
}
但现在我收到以下错误消息:
java.util.NoSuchElementException:消息不属于此文件夹
这里有什么问题?
解决方案
大家好,您需要将文件夹更改为 IMAPFolder
final Store store = email.getMailConfiguration().getWriteStore();
final IMAPFolder folder = (IMAPFolder) store.getFolder("Sent");
folder.open(Folder.READ_WRITE)
在此文件夹的帮助下获取您的所有消息,我编写了以下方法来获取消息的 UID
private long getMessagesUID(UIDFolder folder,javax.mail.message message){
try{
return folder.getUID(message)
}catch(Exception ex)
{
ex.printStackTrace();
}
如有任何疑问,请告诉我。