使用Javamail从邮件列表中查找特定的未读邮件

使用Javamail从邮件列表中查找特定的未读邮件,java,jakarta-mail,Java,Jakarta Mail,我的方法是- 获取总邮件列表- List<Message> totalMessageList = Arrays .asList(folder.getMessages()); List totalMessageList=数组 .asList(folder.getMessages()); 创建一个只有未读邮件的列表。(我不得不这样做,因为我找不到任何直接的API来获取新邮件列表。有一个问题帮助我找到了邮件是否未读) List unreadMessageList

我的方法是-

  • 获取总邮件列表-

    List<Message> totalMessageList = Arrays
                .asList(folder.getMessages());
    
    List totalMessageList=数组
    .asList(folder.getMessages());
    
  • 创建一个只有未读邮件的列表。(我不得不这样做,因为我找不到任何直接的API来获取新邮件列表。有一个问题帮助我找到了邮件是否未读)

    List unreadMessageList=new ArrayList();
    
    为了简洁起见,我没有发布从邮件总数列表中构建未读邮件列表的全部逻辑

  • 遍历未读邮件列表>检查是否有任何邮件具有所需主题,然后阅读邮件内容>如果未找到此类邮件,则抛出IllegalStateExcepton

  • 现在我的问题是-我能改进这种方法吗?

    你能使用吗

    Folder.search(SearchTerm): Message[]
    

    使用相关搜索术语,例如未读标志的FlagTerm

    在谷歌上快速搜索找到了这个


    这可能很有用,但我没有尝试过它

    根据您的应用程序,空邮箱处于非法状态似乎有些奇怪。我必须提到我正在使用Gmail-nop,它不是空邮箱,它没有收到我用来触发IllegalStateException的新的所需邮件。若不是这样,那个么还有什么更好的例外呢?我刚刚意识到,我为最简单的任务写了多少代码。谢谢,很高兴,我已经有一段时间没有使用它了,但是我对javax.mail如何轻松地完成我想做的大部分事情印象深刻。
    Folder.search(SearchTerm): Message[]