电子邮件同步的最佳方式:POP3 UIDL,IMAP UID,消息ID

时间:2014-10-09 16:59:16

标签: imap pop3 vmime

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

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

  • IMAP:UID(RFC 3501)
  • POP3:UIDL(RFC 1932)
  • 互联网格式消息:消息ID(RFC 5322)

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

你可以帮帮我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

邮件ID通常由发件人生成,因此无法保证唯一。重复此操作是微不足道的:将消息从一个IMAP文件夹复制到另一个IMAP文件夹。

答案 1 :(得分:1)

虽然Max说(FolderName, UIDVALIDITY, UID)的元组永远不会引用任何其他消息,但遗憾的是,不能保证给定的消息总是会被引用只使用相同的元组。允许服务器碰撞UIDVALIDITY,并且没有标准方法可以提供跨消息移动或识别重复消息的唯一标识符。