Как работает поле заголовка письма «thread-index»? - PullRequest
33 голосов
/ 17 февраля 2010

Мне было интересно, знает ли кто-нибудь, как работает поле индекса потока в заголовках электронной почты?

Вот простая цепочка индексов потоков электронной почты, с которыми я связывался сам.

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==

Я не могу с уверенностью сказать, как я могу связать эти электронные письма вместе. Обычно я использовал бы поле in-reply-to или поле ссылки, но недавно я обнаружил, что Blackberrys НЕ включают эти поля. Единственное включенное поле Thread-Index.

Ответы [ 4 ]

19 голосов
/ 21 марта 2010

Существует хороший анализ того, как именно этот нестандартный заголовок "Thread-Index" будет использоваться, в этом посте и ссылках на него, включая этот pdf (статьяпредставлен на конференции CEAS 2006) и это продолжение , которое включает комментарий к проблеме из исходного кода evolution (который, по-видимому, отражает существенную обратную разработку этого недокументированного заголовка).

Краткое содержание: по сути, автор в конечном итоге отказывается от использования этого заголовка и рекомендует и демонстрирует другой подход, который также реализован в библиотеке c-client, входящей в состав UW IMAP Toolkit openисходный пакет (который не только для IMAP - не позволяйте имени обмануть вас, он также работает для POP, NNTP, локальных почтовых ящиков и т. д.)

17 голосов
/ 14 ноября 2012

Это значения индекса беседы в кодировке base64.Нет необходимости перепроектировать их, так как они задокументированы Microsoft, например, http://msdn.microsoft.com/en-us/library/ms528174(v=exchg.10).aspx и более подробно о http://msdn.microsoft.com/en-us/library/ee202481(v=exchg.80).aspx

Кажется, что индексы в вашем примере не представляют собой тот же диалог, что, вероятно, означает, чточто программное обеспечение, которое отправляло письма, не могло связать их вместе.

РЕДАКТИРОВАТЬ: К сожалению, у меня недостаточно репутации, чтобы добавить комментарий, но Адамо прав, что он содержит метку времени - несколько эзотерическийзакодированный частичный FILETIME.Но он также содержит GUID, поэтому гарантированно быть уникальным для этой почты (конечно, одна и та же почта может существовать в нескольких копиях).

4 голосов
/ 21 февраля 2010

Я не удивлюсь, если найдутся почтовые клиенты, которые не смогут связать письма Blackberry со своими ветками. Заголовок Thread-Index выглядит как расширение Microsoft.

В любом случае, Novell Evolution реализует это. Взгляните на это краткое описание того, как они это делают, или этот фрагмент кода , который находит родителя потока для данного сообщения.

Я предполагаю, что, поскольку длины заголовков Thread-Index в вашем примере одинаковы, все эти сообщения были начатыми потоками? Странно, что они всего 22 байта, хотя я полагаю, что вы можете попробовать применить к ним правило 5 байтов на сообщение и посмотреть, работает ли оно для вас.

2 голосов
/ 03 сентября 2013

Если вы заинтересованы в парсинге Thread-Index в C #, посмотрите этот пост

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

Фрагмент, который вы там найдете, позволит вам проанализировать индекс потока и получить идентификатор GUID потока и сообщение DateTime. Однако есть проблема, она не работает для всех потоковых индексов. Вопрос в том, почему некоторые Thread-Indexes генерируют недопустимый DateTime и что нужно сделать, чтобы поддерживать их все ???

...