我正在尝试寻找一种保证唯一的标识符来区分每个电子邮件。目前,我正在编写一个连接到Microsoft Exchange的应用程序,但我希望能够支持其他电子邮件服务。
我认为唯一标识符是EmailMessage.InternetMessageId
,并且此属性使用PR_ENTRYID,但我找不到任何支持此说法的文档。
所有电子邮件都有唯一的标识符吗?在Exchange中,这个标识符是InternetMessageId吗?
我正在尝试寻找一种保证唯一的标识符来区分每个电子邮件。目前,我正在编写一个连接到Microsoft Exchange的应用程序,但我希望能够支持其他电子邮件服务。
我认为唯一标识符是EmailMessage.InternetMessageId
,并且此属性使用PR_ENTRYID,但我找不到任何支持此说法的文档。
所有电子邮件都有唯一的标识符吗?在Exchange中,这个标识符是InternetMessageId吗?
邮件没有保证的唯一标识符,Message-ID 是最接近的。实际上,你能期望的最好情况只是对于服务器的唯一性......即便如此也要视邮件服务器类型和其操作而定。
我猜这是永远不会100%保证的事情。我的意思是,那个数字来自于特殊的电子邮件头,在过去的时间里被开发并被特定的RFC文件正式描述过。有时它可能是由像Exchange这样的特殊服务提供的特殊信息(就像您在问题中引用的那样)。即使我不能给你一个真正完整的答案,我可以确定告诉你,你没有唯一性的保证。为了进一步阅读,我在SO上找到了一个与互联网邮件消息的抽象领域中所说的头部相关的有趣答案:"每个收件人的“Message ID”电子邮件头是否唯一?
使用一个哈希函数如何?它可以考虑电子邮件信息的一些元素,从而产生一个唯一的哈希值。例如: GetEmailHash(dateTimeReceived+sender+subject+body)
EmailMessage.ItemId.UniqueId
怎么样? - 0014