2012-08-06 7 views
12

Ich versuche die garantierte eindeutige Kennung zu finden, um E-Mails voneinander zu unterscheiden. Momentan schreibe ich eine Anwendung, die sich mit Microsoft Exchange verbindet, möchte aber andere E-Mail-Dienste unterstützen.Was ist die eindeutige Identifikation für E-Mails?

ich denke, dass die eindeutige Kennung die EmailMessage.InternetMessageId ist, und dass diese Eigenschaft nutzt die PR_ENTRYID, mit der Ausnahme, dass ich alle Unterlagen, dies zu unterstützen nicht finden kann.

Haben alle E-Mails eine eindeutige Kennung und ist das (in Exchange) die InternetMessageId?

+0

Wenn nur jede E-Mail eine GUID erhalten hat, die zuverlässig generiert wurde ... –

+0

Sie könnten einen Hashing-Algorithmus ausprobieren. – KingCronus

+1

Wie wäre es mit 'EmailMessage.ItemId.UniqueId'? – 0014

Antwort

10

Es gibt keine garantierte eindeutige ID für E-Mails, die Message-ID ist ungefähr so ​​nah wie Sie kommen. Das Beste, auf das Sie wirklich hoffen können, ist einzigartig für den Server ... und sogar das hängt von der Art des Mail-Servers ab und was er tut.

+1

Um nur das in Exchange hinzuzufügen, ist EntryID mit dem übergeordneten Ordner verwandt. Wenn Sie eine Nachricht in einen anderen Ordner verschieben, ändert sich ihre EntryID – Basic

3

Ich denke, das ist etwas nie 100% garantiert. Ich meine, dass diese Nummer aus speziellen E-Mail-Headern stammt, die im Laufe der Zeit entwickelt und offiziell durch spezifische RFC-Dokumente beschrieben wurden. Manchmal kann es sich um eine spezielle Information handeln, die von einem speziellen Dienst wie Exchange bereitgestellt wird (was Sie in Ihrer Frage angegeben haben). Auch wenn ich Ihnen keine wirklich vollständige Antwort geben kann, kann ich sicher sein, dass Sie sich der Tatsache bewusst sind, dass Sie keine Garantie für die Einzigartigkeit haben. Für weitere Lesung fand ich eine interessante Antwort auf SO zu dem oben genannten Header in der abstrakten Domäne der Internet-Mail-Nachrichten im Zusammenhang: Is the "Message ID" Email Header unique for each recipient?

1

Wie sei es ein hash function verwenden, die ein uniquehash unter Berücksichtigung einig Elemente der E-Mail-Nachricht ergeben könnten. d. h. GetEmailHash(dateTimeReceived+sender+subject+body)