使用 JavaMail API 和 IMAP,我想知道一条消息已从文件夹 a 移动到 b。我怎么能在不添加听众的情况下做到这一点?我的意思是我想在登录帐户并打开文件夹时发现消息的变化。
问题是,如果您在文件夹 a 中有 3 条 id 为 1 2 和 3 的消息,并且您将 id 为 3 的消息移动到文件夹 B,则消息的 id 会更改,并且我们在文件夹 B 中有一条 id 为 1 的消息。
我的目标是将邮件服务器中的消息结构与我自己的本地服务器同步。我必须自己保留所有消息信息、标志等。因此,在每次登录时,我都必须发现对存储在邮件服务器中的消息所做的所有更改。
我可以通过以下方式收到新邮件或未读邮件:
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.RECENT), true));
或通过
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
但我不仅对新邮件感兴趣,我还想知道对旧邮件所做的更改,例如我想了解以下信息:
2个月前已阅读的邮件已移至另一个文件夹。
我的想法是,
因为 uids 改变了,我不能用它来识别邮件。我想我必须使用诸如主题发件人接收日期之类的邮件信息,建立它们的哈希值并比较每次登录时消息的哈希值。但它会导致性能问题。