为什么Gmail返回超出UID FETCH命令指定范围的UID?

时间:2016-03-09 01:44:03

标签: javamail imap gmail-imap

当我运行fetch命令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];

1 个答案:

答案 0 :(得分:2)

在某些情况下,IMAP服务器需要向您发送ExtractDecodeEditEncodeMuxTest个响应。有时服务器需要等待响应,但它从不需要向您发送任何内容。

如果您发送的命令需要两个响应,而其他人做了需要一个响应的事情,那么您会得到三个响应。有些事情可能会改变邮件上的标记(虽然没有提示要求,但需要FETCH)或向您发送一些邮件(需要FETCH ... FLAGS ...)。