- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 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/
我是一名优秀的程序员,十分优秀!