Подтвердить что ты не робот

Как работает поле заголовка сообщения "thread-index"?

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

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

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.

4b9b3361

Ответ 1

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

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

Ответ 2

Они являются значениями индекса разговора с кодировкой 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 p >

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

EDIT: К сожалению, у меня недостаточно репутации, чтобы добавить комментарий, но adamo прав, что он содержит временную метку - несколько эзотерическое кодированное частичное FILETIME. Но он также содержит GUID, поэтому он почти наверняка будет уникальным для этой почты (конечно, одна и та же почта может существовать в нескольких экземплярах).

Ответ 3

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

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

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

Ответ 4

Если вы заинтересованы в разборе индекса Thread в С#, пожалуйста, посмотрите этот пост

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

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