2012-08-06 7 views
12

Próbuję znaleźć gwarantowany unikalny identyfikator, aby odróżnić wiadomości od siebie nawzajem. Obecnie piszę aplikację, która łączy się z Microsoft Exchange, jednak chcę mieć możliwość obsługi innych usług e-mail.Jaka jest niepowtarzalna identyfikacja e-maili?

myślę że unikalny identyfikator jest EmailMessage.InternetMessageId i że ta właściwość wykorzystuje PR_ENTRYID, z tym że nie mogę znaleźć żadnej dokumentacji na poparcie tego.

Czy wszystkie e-maile mają unikalny identyfikator i czy jest to (w Exchange) InternetMessageId?

+0

Jeśli tylko każdy e-mail ma identyfikator GUID, który został wygenerowany niezawodnie ... –

+0

Możesz wypróbować algorytm mieszający. – KingCronus

+1

Co powiesz na 'EmailMessage.ItemId.UniqueId'? – 0014

Odpowiedz

10

Nie ma gwarantowanego unikalnego identyfikatora dla wiadomości e-mail, Message-ID jest tak blisko, jak to możliwe. Najlepsze, na co możesz mieć nadzieję, jest unikalne dla serwera ... a nawet to zależy od typu serwera pocztowego i jego działania.

+1

Wystarczy dodać, że w Exchange EntryID jest powiązany z folderem nadrzędnym. Przeniesienie wiadomości do innego folderu spowoduje zmianę jej EntryID – Basic

3

Myślę, że to coś nigdy nie jest gwarantowane w 100%. Mam na myśli, że liczba ta pochodzi ze specjalnych nagłówków e-maili opracowanych w czasie i opisanych oficjalnie przez konkretne dokumenty RFC. Czasami może to być specjalna informacja dostarczana przez specjalną usługę, taką jak Exchange (co cytowałeś w swoim pytaniu). Nawet jeśli nie mogę udzielić ci naprawdę kompletnej odpowiedzi, mogę z całą pewnością stwierdzić, że nie masz gwarancji jedności. Dla dalszego czytania Znalazłem ciekawą odpowiedź na SO związanych z wyżej wymienioną głowicę w abstrakcyjnej dziedziny Internet Mail messages: Is the "Message ID" Email Header unique for each recipient?

1

Jak o użyciu hash function które mogłyby uzyskując uniquehash rozważa pewne elementy wiadomości e-mail. tj. GetEmailHash(dateTimeReceived+sender+subject+body)

Powiązane problemy