gpt4 book ai didi

java - 使用 IMAP 邮寄 : How to detect that a message has been moved from one folder to another?

转载 作者:行者123 更新时间:2023-12-02 00:59:32 25 4
gpt4 key购买 nike

使用 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));

但我不仅对新邮件感兴趣,我还想知道对旧邮件所做的更改,例如我想了解这一点:

两个月前阅读的邮件已移至另一个文件夹。

我的想法是,

因为 uids 发生变化,我无法使用它来识别邮件。我想我必须使用邮件信息,例如主题发件人接收日期,构建它们的哈希值并比较每次登录时消息的哈希值。但这会导致性能问题。

最佳答案

您无法在 IMAP 中执行此操作。跟踪 Message-Id header 可能会让您成功一半,但是您必须为极端情况添加各种检查,例如重复的消息 ID(是的,它们是应该另请记住,基线 IMAP 为您提供的是单个邮箱的良好同步 View ,而不是组合后的一组邮箱的原 subview 。这意味着,即使用户在文件夹 A 和 B 之间“移动”了一条消息,它也可能在脚本的 A 和 B 中在较长时间内可见。

某些 IMAP 服务器添加了非标准字段,您可以FETCH其中包含消息负载的加密哈希值。不过,这些仍然是非标准的。

关于java - 使用 IMAP 邮寄 : How to detect that a message has been moved from one folder to another?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16265703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com