0

我正在使用 Java Mail api 访问 gmail 帐户(未修复)。我需要在所有邮件中搜索给定的 Mail id ()。搜索应在具有给定 ID 的消息第一次出现时终止(优化:只应存在具有给定 ID 的单个邮件)

我当然想跳过“所有邮件”文件夹。

最简单的方法是:

  1. 获取默认文件夹
  2. 默认获取所有文件夹。
    1. 在当前文件夹中使用 MessageIDTerm 搜索
    2. 如果未找到消息,则对子文件夹递归重复步骤 2
    3. 否则返回找到的文件夹。

这会导致大量不必要的服务器调用浪费,有没有人有更优化的方法?

4

2 回答 2

2

自从我搞砸所有这些东西以来已经有很多年了,但你应该能够:

  • 使用该IMAP4 UID命令搜索给定的 id(或 id 范围)。参考RFC3501部分6.4.8
  • 将此与对象一起使用doCommand()IMAPFolder并根据需要在您的文件夹中重复使用。
于 2009-08-28T14:17:25.217 回答
0
folder.list("*");

这是一种递归返回所有文件夹列表的方法。所以我只需要为文件夹运行 1 个循环!当然,搜索中找到的每条消息都有一个循环。

于 2009-09-07T07:31:08.263 回答