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

标签 java jakarta-mail

我的方法是 -

  1. 获取总邮件列表 -

    List<Message> totalMessageList = Arrays
                .asList(folder.getMessages());
    
  2. 据此创建一个仅包含未读邮件的列表。 (我必须这样做,因为我找不到任何直接的 API 来获取新邮件列表。发布了一个有助于确定邮件是否未读的问题 here )

    List<Message> unreadMessageList = new ArrayList<Message>();
    

    为了简洁起见,我没有发布从邮件总数列表中构建未读邮件列表的完整逻辑。

  3. 遍历未读邮件列表 > 检查是否有邮件具有所需的主题,然后读取邮件内容 > 如果没有找到此类邮件,则抛出 IllegalStateException

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

最佳答案

你能用吗

Folder.search(SearchTerm): Message[]

http://javamail.kenai.com/nonav/javadocs/javax/mail/Folder.html#search%28javax.mail.search.SearchTerm%29

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

http://javamail.kenai.com/nonav/javadocs/javax/mail/search/FlagTerm.html

在 Google 上快速搜索发现了这个

http://www.java2s.com/Code/Java/Email/Searchthegivenfolderformessagesmatchingthegivencriteria.htm

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

关于java - 使用 Javamail 从邮件列表中查找特定的未读邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6900142/

相关文章:

java - 从内部类引用的局部变量

java - 从 MultiValueMap 获取值

java - GridBagLayout:gridwidth > 1 时的对齐方式和宽度

java - 使用 Javamail 将图像直接插入 HTML 模板

使用 Hibernate、Quartz 和 JavaMail 的应用程序中的 Java OutOfMemory

带有 OVH 的 Javax 邮件 API

java - 更新到 Safari 12.0 - 不再列出 Java 插件

javax.mail.MessagingException :

java - 发送邮件前在 header 中设置 MessageId

java - 在创建新的 JDO 实体之前,如何确保 Google AppEngine 中不存在该实体?