如何组合多个 IMAP 提取命令?

How can I combine multiple IMAP fetch commands?

我正在使用 JavaMail 从 IMAP 帐户获取邮件数据。例如,我使用以下命令检索 uid 为 1 到 4 的消息正文:

UID FETCH 1:4 BODY[]

有没有办法为特定的消息获取特定的正文部分?例如,我想使用类似的东西:

UID FETCH (1 BODY[1.3]) (2 BODY[1.1]) (3 BODY[2.1]) (4 BODY[1.4])

PS:我知道我也可以发送 4 个不同的命令,但出于性能原因,我无法为每条消息单独发出请求。

您必须为每封邮件检索相同的正文部分。也就是说,如果您想要消息 2 和 4 的第 1 部分以及消息 3 的第 2 部分,您发送的命令不能少于两个:

a uid fetch 2,4 (body[1])
b uid fetch 3 (body[3])

好消息是您可以同时发送它们。只要命令不冲突,您就可以发送第二个命令而无需等待第一个命令的结果。前提是您可以找到使用 Javamail 的方法。

(或者可能是 body.peek[1],它与 body[] 相同,只是它没有设置 \seen 标志。)