【问题标题】:Java Mail: get UniqueID from MessageJava Mail:从 Message 中获取 UniqueID
【发布时间】:2020-08-20 04:32:39
【问题描述】:

我需要来自消息对象的 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: 消息不属于这个 文件夹

这里有什么问题?

【问题讨论】:

  • 嗨,你有什么解决方案吗,我也面临同样的问题。如果您找到解决此错误的解决方案,请告诉我。提前致谢
  • 不,很抱歉我没有找到任何解决方案
  • 我找到了解决这个问题的方法。
  • 可以分享一下吗?
  • @shekharshrivastava 你能分享一下吗,拜托。谢谢

标签: java email jakarta-mail


【解决方案1】:

大家好,您需要将文件夹更改为 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();
       }

如有任何疑问,请告诉我。

【讨论】:

  • 是的,因为我有一个与 IMAP 相关的要求。
猜你喜欢
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2016-02-29
  • 2017-07-14
  • 2015-01-13
  • 1970-01-01
相关资源
最近更新 更多