2012-08-06 20 views
12

Estoy tratando de encontrar el identificador único garantizado para distinguir los correos electrónicos entre sí. Actualmente, estoy escribiendo una aplicación que se conecta a Microsoft Exchange, sin embargo, deseo poder admitir otros servicios de correo electrónico.¿Cuál es la identificación única para los correos electrónicos?

Yo creo que el identificador único es el EmailMessage.InternetMessageId, y que esta propiedad utiliza el PR_ENTRYID, excepto que no puedo encontrar ninguna documentación para apoyar esto.

¿Todos los correos electrónicos tienen un identificador único y es eso (en Exchange) el InternetMessageId?

+0

Si solo cada correo electrónico tiene un GUID que se generó confiablemente ... –

+0

Puede intentar con un algoritmo hash. – KingCronus

+1

¿Qué tal 'EmailMessage.ItemId.UniqueId'? – 0014

Respuesta

10

No existe una identificación única garantizada para los correos electrónicos, el ID de mensaje es lo más parecido posible. Lo mejor que puedes esperar es único para el servidor ... e incluso eso depende del tipo de servidor de correo y de lo que haga.

+1

Solo para agregar que en Exchange, EntryID está relacionado con la carpeta principal. Mover un mensaje a una carpeta diferente cambiará su EntryID – Basic

3

Supongo que es algo nunca 100% garantizado. Quiero decir que ese número proviene de encabezados especiales de correo electrónico desarrollados durante el tiempo y descritos oficialmente por documentos específicos de RFC. A veces puede ser una información especial proporcionada por un servicio especial como Exchange (lo que citó en su pregunta). Incluso si no puedo darle una respuesta realmente completa, puedo asegurar que debe ser consciente del hecho de que no tiene garantías de unicidad. Para leer más He encontrado una respuesta interesante en SO relacionado con dicha cabecera anterior en el dominio abstracto de los mensajes de correo de Internet: Is the "Message ID" Email Header unique for each recipient?

1

Cómo sobre el uso de un hash function que podría producir un uniquehash teniendo en cuenta algunos elementos del mensaje de correo electrónico. es decir, GetEmailHash(dateTimeReceived+sender+subject+body)

Cuestiones relacionadas