电子邮件的唯一标识是什么?

18

我正在尝试寻找一种保证唯一的标识符来区分每个电子邮件。目前,我正在编写一个连接到Microsoft Exchange的应用程序,但我希望能够支持其他电子邮件服务。

认为唯一标识符是EmailMessage.InternetMessageId,并且此属性使用PR_ENTRYID,但我找不到任何支持此说法的文档。

所有电子邮件都有唯一的标识符吗?在Exchange中,这个标识符是InternetMessageId吗?


如果每个电子邮件都有一个可靠生成的GUID... - James Johnston
你可以尝试使用哈希算法。 - KingCronus
1
EmailMessage.ItemId.UniqueId 怎么样? - 0014
3个回答

15

邮件没有保证的唯一标识符,Message-ID 是最接近的。实际上,你能期望的最好情况只是对于服务器的唯一性......即便如此也要视邮件服务器类型和其操作而定。


2
只是补充一下,在Exchange中,EntryID与父文件夹相关。将邮件移动到不同的文件夹中会更改其EntryID。 - Basic

4

我猜这是永远不会100%保证的事情。我的意思是,那个数字来自于特殊的电子邮件头,在过去的时间里被开发并被特定的RFC文件正式描述过。有时它可能是由像Exchange这样的特殊服务提供的特殊信息(就像您在问题中引用的那样)。即使我不能给你一个真正完整的答案,我可以确定告诉你,你没有唯一性的保证。为了进一步阅读,我在SO上找到了一个与互联网邮件消息的抽象领域中所说的头部相关的有趣答案:"每个收件人的“Message ID”电子邮件头是否唯一?


4

使用一个哈希函数如何?它可以考虑电子邮件信息的一些元素,从而产生一个唯一的哈希值。例如: GetEmailHash(dateTimeReceived+sender+subject+body)


请注意,此处保留了HTML标签。

任何收件人接收电子邮件的时间都会有所不同,这取决于邮件服务、时区和互联网延迟。 - Fennekin
1
我们不能使用时间然后对其进行哈希。 - Fennekin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接