2

我正在制作一个可以使用 POP3 和 IMAP 的邮件客户端。我正在使用 vmime api 在 C++ 中对客户端进行编程。我的问题是:同步邮件的最佳方式是什么?

我认为标识符是好方法,但我不知道同步邮件的最佳标识符是什么:

  • IMAP:UID (RFC 3501)
  • POP3:UIDL (RFC 1932)
  • Internet 格式消息:message-ID (RFC 5322)

message-ID 是最容易使用的,但是否有可能有两个相同的 message-ID?UID (IMAP) 和 UIDL (UID) 有同样的问题吗?

你能帮助我吗?先感谢您。

4

2 回答 2

3

在 IMAP 中(FolderName, UIDVALIDITY, UID),通过规范保证 的元组对于给定的服务器永远是唯一的。请注意,需要所有三个值来保证唯一性。每个文件夹都有自己的 UID,它们可能会重叠。已删除和重命名的文件夹也可能具有相同的 UID,但必须具有不同的 UIDVALIDITY。

在 POP3 中,UIDL 通常就足够了,因为没有文件夹。

Message-ID 通常由发送者生成,因此不能保证唯一。复制这一点很简单:将邮件从一个 IMAP 文件夹复制到另一个。

于 2014-10-09T20:37:24.297 回答
2

尽管 Max 说的对,一个元组(FolderName, UIDVALIDITY, UID)永远不会引用任何其他消息,但不幸的是,不能保证给定消息总是只使用同一个元组来引用。服务器被允许碰撞UIDVALIDITY,并且没有提供唯一标识符的标准方法,这些标识符在消息移动中持续存在或识别重复消息。

于 2014-10-15T00:47:21.880 回答