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

时间:2015-01-29 12:31:00

标签: java javamail imap fetch javax.mail

我正在使用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个不同的命令,但出于性能原因,我无法为每条消息单独发出请求。

1 个答案:

答案 0 :(得分:2)

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

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

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

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