2010-02-17 9 views
30

Me preguntaba si alguien sabía cómo funciona el campo de índice de subprocesos en los encabezados de correo electrónico.¿Cómo funciona el campo de encabezado del correo electrónico 'índice de subprocesos'?

Aquí hay una cadena simple de índices de hilos de correos electrónicos con los que me envié un mensaje.

Email 1 Thread-Index: AcqvbpKt7QRrdlwaRBKmERImIT9IDg== 
Email 2 Thread-Index: AcqvbpjOf+21hsPgR4qZeVu9O988Eg== 
Email 3 Thread-Index: Acqvbp3C811djHLbQ9eTGDmyBL925w== 
Email 4 Thread-Index: AcqvbqMuifoc5OztR7ei1BLNqFSVvw== 
Email 5 Thread-Index: AcqvbqfdWWuz4UwLS7arQJX7/XeUvg== 

Parece que no puedo decir con certeza cómo puedo vincular estos correos electrónicos. Normalmente, utilizaría el campo In-reply-to o el campo de referencias, pero recientemente descubrí que los Blackberry NO incluyen estos campos. El único incluye el campo Índice de subprocesos.

+4

Si está buscando cómo implementar el enhebrado de mensajes, esto es muy útil: http://www.jwz.org/doc/threading.html – deepwell

+0

Mi experiencia es con .EML ya que no tienen el índice de conversación como MSG. Hice aproximadamente 20,000 y si los primeros 32 caracteres coincidían, parecían estar en la misma cadena de correo electrónico. – Paparazzi

Respuesta

4

No me sorprendería que haya clientes de correo que no puedan vincular los mensajes de Blackberry a sus hilos. El encabezado Thread-Index parece ser una extensión de Microsoft.

De cualquier modo, Novell Evolution implementa esto. Eche un vistazo a this short description de cómo lo hacen, o this piece of code que encuentra el subproceso primario de un mensaje dado.

Supongo que, dado que las longitudes de los encabezados Thread-Index en su ejemplo son todas iguales, ¿estos mensajes fueron todos los inicios de subprocesos? Es extraño que solo tengan 22 bytes, aunque supongo que podrías intentar aplicarles la regla de 5 bytes por mensaje y ver si te funciona.

+1

Parece que los clientes de correo electrónico que no son de Outlook no manejan correctamente el índice de subprocesos. Los índices de hilos de arriba son de Thunderbird. Comprobé con outlook, y sigue la regla que usted indicó. Muy molesto – Tim

+1

Al mirar un montón de encabezados de índice de subproceso generados por Outlook, tengo la sensación de que la descripción vinculada es ligeramente incorrecta: los iniciadores de subprocesos tienen un índice de subproceso decodificado de 22 bytes, no 27. – dkarp

+1

Aquí hay un error relacionado en el Rastreador de errores de Mozilla (Thunderbird): https://bugzilla.mozilla.org/show_bug.cgi?id=331207 – guettli

19

Hay un buen análisis de cómo exactamente esto no estándar "Tema-Indice" cabecera parece utilizarse, en this post y enlaces de la misma, incluyendo this pdf (un documento presentado en la conferencia CEAS 2006) y this follow-up, que incluye una comente sobre el problema desde el código fuente evolution (que parece reflejar la ingeniería inversa sustancial de este encabezado no documentado).

Resumen Ejecutivo: en esencia, el autor finalmente se da por vencido en el uso de esta cabecera y recomienda sacar enfoque diferente, que también se implementó en la biblioteca c-client, que forma parte del paquete de código abierto UW IMAP Toolkit (que es no para IMAP solamente - no deje que el nombre lo engañe, también funciona para POP, NNTP, buzones locales, & c).

+1

Según un nuevo [comentario] (http://blog.postmaster.gr/2007/12/11/trying- to-make-use-outlooks-thread-index-header/# comment-46307) dejó en mi publicación de blog que mencionó _ "es una indicación de fecha y hora OLE (22 bytes), junto con timediffs (5 bytes). Lo que apesta , porque la marca de tiempo no está garantizada única. "_ – adamo

+0

Ese" enfoque diferente "implementado en el c-client se describe aquí: http://www.jwz.org/doc/threading.html –

+0

Es realmente una locura cuánto esfuerzo las personas parece haber puesto en revertir esto a pesar de que ha sido documentado por Microsoft desde al menos 2003 (https://msdn.microsoft.com/en-us/library/ms528174(v=exchg.10).aspx), y muy probablemente mucho antes que eso (la biblioteca CDO se incluyó en NT 4.0, la documentación para eso probablemente incluía la misma información). – poizan42

15

Son valores de índice de conversación codificados en base64. No es necesario realizar una ingeniería inversa ya que están documentados por Microsoft en, por ejemplo, http://msdn.microsoft.com/en-us/library/ms528174(v=exchg.10).aspx y más detallada en http://msdn.microsoft.com/en-us/library/ee202481(v=exchg.80).aspx

Aparentemente, los índices en su ejemplo no representan la misma conversación, lo que probablemente significa que el software que envió los correos no los pudo vincular.

EDITAR: Lamentablemente no tengo la reputación suficiente para agregar un comentario, pero adamo tiene razón en que contiene una marca de tiempo, un ARCHIVO parcial algo esotérico codificado. Pero también contiene un GUID, por lo que se garantiza que será único para ese correo (por supuesto, el mismo correo puede existir en múltiples copias).

+0

El índice de conversación es OutLook (MAPI). No hay para Outlook Express. Al menos no puedo encontrarlo. – Paparazzi

1

Si usted está interesado en analizar el hilo de índice en C# favor, eche un vistazo a este post

http://forum.rebex.net/questions/3841/how-to-interprete-thread-index-header

El fragmento se encuentra allí le permitirá analizar el hilo-índice y recuperar el hilo GUID y mensaje DateTime. Sin embargo, hay un problema, no funciona para todos los índices de subprocesos. La pregunta es por qué algunos índices de subprocesos generan DateTime no válido y qué hacer para apoyarlos a todos?

Cuestiones relacionadas