【问题标题】:What is the unique identification for emails?电子邮件的唯一标识是什么?
【发布时间】:2012-08-03 20:35:16
【问题描述】:

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

认为唯一标识符是EmailMessage.InternetMessageId,并且该属性使用PR_ENTRYID,但我找不到任何文档来支持这一点。

所有电子邮件都具有唯一标识符吗?那是(在 Exchange 中)InternetMessageId 吗?

【问题讨论】:

  • 如果每封电子邮件都有一个可靠生成的 GUID...
  • 你可以试试散列算法。
  • EmailMessage.ItemId.UniqueId 怎么样?

标签: c# email exchange-server uniqueidentifier


【解决方案1】:

没有保证电子邮件的唯一 ID,Message-ID 与您来的时候差不多。您实际上可以期望的最佳效果是服务器独有的......甚至这取决于邮件服务器的类型及其功能。

【讨论】:

  • 只是在 Exchange 中添加,EntryID 与父文件夹相关。将邮件移动到不同的文件夹将更改其 EntryID
【解决方案2】:

我想这是永远不会 100% 保证的事情。我的意思是这个数字来自特定的 RFC 文档在一段时间内开发并正式描述的特殊电子邮件标头。有时它可能是由 Exchange 等特殊服务提供的特殊信息(您在问题中引用的内容)。即使我不能给你一个真正完整的答案,我可以肯定地告诉你,你应该意识到你不能保证唯一性。为了进一步阅读,我在 Internet 邮件消息的抽象域中找到了一个与上述标头相关的有趣答案:Is the "Message ID" Email Header unique for each recipient?

【讨论】:

    【解决方案3】:

    考虑到电子邮件的某些元素,如何使用hash function 可以产生unique hash。即GetEmailHash(dateTimeReceived+sender+subject+body)

    【讨论】:

    • 任何收件人收到电子邮件的时间都会有所不同,这取决于邮件服务、时区和互联网延迟。
    • 我们不能使用时间然后散列它。
    猜你喜欢
    • 2016-03-29
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2011-09-07
    • 2015-04-07
    • 2015-04-28
    • 1970-01-01
    相关资源
    最近更新 更多