使用 javax.mail 阅读最近和未看到的消息

Read Recent and Unseen message using javax.mail

我正在使用 javax.mail 通过 'imaps' 协议从收件箱文件夹中读取邮件。我正在使用以下代码片段:

  Session session = Session.getDefaultInstance(props, null);
  Store store = session.getStore("imaps");
  store.connect();
  store.getFolder("inbox");
  inbox.open(Folder.READ_WRITE);
  FlagTerm unseenFlagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
  FlagTerm recentFlagTerm = new FlagTerm(new Flags(Flags.Flag.RECENT), true);

但是我没有收到任何消息。我想要最新的消息,但仍然不是 read/seen。请提出更好的解决方案?我仍然不确定 'new Flags(Flags.Flag.RECENT) set TRUE or FALSE' 做什么?

您没有包含所有代码。大概您在传递给搜索方法的 AndTerm 中使用了这两个 FlagTerms。

在邮件上设置 RECENT 标志以及何时清除它在某种程度上取决于服务器。如果你打开一个文件夹然后关闭它,它可能会清除所有最近的标志,前提是你已经看到哪些消息是最近的。

如果您忽略 RECENT 标志并只查找未设置的 SEEN 标志,您可能会更幸运。

您还需要决定 "most recent" 是指 "most recently received" 还是 "most recently sent"。前者很容易;它只是返回数组中的最后一条消息。后者将要求您按发送日期对返回的消息进行排序。