如何确保IMAP电子邮件上的SEEN标志在执行getContent时不会自动标记为SEEN

时间:2013-05-15 13:24:02

标签: imap javamail

我正在处理与外部IMAP服务器的错误连接。我需要我的应用程序定期从此邮件服务器下载邮件。在很多情况下,我的代码已经使用javamail下载了消息并执行了message.getContent,然后处理各个正文部分(附件)。在执行此操作的过程中,连接可能会丢失。

因此我需要确保消息在执行message.getContent时没有自动标记为SEEN,这就是Javamail的行为方式,如本回复中所述: https://stackoverflow.com/a/7679091/303106

有没有办法确保未下载的邮件未标记为SEEN?

2 个答案:

答案 0 :(得分:6)

Message msg = ...;
((IMAPMessage)msg).setPeek(true);

答案 1 :(得分:4)

是的,在获取数据时使用BODY.PEEK而非BODY,和/或使用EXAMINE代替SELECT来打开邮箱。我将把它作为练习让读者阅读javamail的文档,看看这些选项如何与havamail提供的功能相关。