![除了下载每封邮件的实际内容之外,有没有办法确定两个 IMAP 服务器上的电子邮件是否相同?](https://linux22.com/image/562599/%E9%99%A4%E4%BA%86%E4%B8%8B%E8%BD%BD%E6%AF%8F%E5%B0%81%E9%82%AE%E4%BB%B6%E7%9A%84%E5%AE%9E%E9%99%85%E5%86%85%E5%AE%B9%E4%B9%8B%E5%A4%96%EF%BC%8C%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E7%A1%AE%E5%AE%9A%E4%B8%A4%E4%B8%AA%20IMAP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%98%AF%E5%90%A6%E7%9B%B8%E5%90%8C%EF%BC%9F.png)
背景是,我正在尝试在两个 IMAP 服务器之间迁移邮件,并且我想确保在重试的情况下不会再次迁移重复的邮件。我想要查询每个 IMAP 服务器以获取与原始电子邮件的 md5 等效的内容,这样我就可以比较哪些电子邮件已迁移,哪些尚未迁移。
在 IMAP4 中可以实现类似的功能吗?我看到了 UID,但它似乎只是服务器独有的,并不是内容真正的唯一标识符。
答案1
消息 ID 应该是唯一的,但这根本无法保证,而且世界上有很多损坏的邮件程序。如果您必须绝对确定,请自己验证校验和,在其他情况下,消息 ID 可能并且应该足够了。
答案2
仍需要进行大量下载,但请尝试获取BODY.PEEK[HEADER]
消息以仅获取标题部分,然后比较标题Message-ID
。
答案3
您可能想要检查“Message-ID”标头值。这与整个消息的 MD5 并不完全相同,但每条唯一消息都应具有唯一的 ID 值;因此,可以安全地假设,如果您在目标服务器上看到消息 ID,则该消息已被复制。