【发布时间】:2016-06-23 05:29:02
【问题描述】:
当我运行提取命令 UID FETCH 170930:170930 BODY[] 时,我得到了响应 88924 FETCH (UID 170920 FLAGS (\Seen))。我没想到会检索到 UID 超出指定范围的消息。这是正常的 IMAP 行为吗? 170930 UID 来自刚才使用 IdleManager 观察文件夹,所以我没有理由相信服务器上不存在具有该 UID 的消息。
我在此处发布的获取请求是基于我用来执行它的 Java 代码的猜测。至少它应该仍然只请求该范围内的消息:
Argument args = new Argument();
args.writeString(Long.toString(start) + ":" + Long.toString(end));
args.writeString("BODY[]");
Response[] r = protocol.command("UID FETCH", args);
Response response = r[r.length - 1];
【问题讨论】:
-
开始:和结束:不是有效的语法。我很惊讶这完全有效。
-
我已经更新了问题,我实际上是从一些 Java 代码发出请求,所以我猜测原始输出。
-
你能打开JavaMail session debugging并发布调试输出显示这个吗?
-
另外,您为什么使用这些低级内部 JavaMail 类而不是 javax.mail 类?
-
谢谢比尔。我将很快包含调试并使用输出更新问题。我使用低级别访问作为自定义 ProtocolCommand 的一部分,以在单个请求中获取大量电子邮件的正文。在此示例中,范围针对单个 UID,但在其他示例中,我在一次提取中检索数百个。 AFAIK 无法在 JavaMail 中指定一个提取配置文件,该配置文件将在使用 folder.fetch 时检索所有包含的正文。
标签: jakarta-mail imap gmail-imap