Identyfikatory

Czyli pola w nagłówku e-mail pozwalające zidentyfikować wiadomość e-mail, np. jej pochodzenie, datę wysłania itp. Jednak tego typu pola można tworzyć i wykorzystywać samemu do przesyłania konkretnych danych. Jednym z takich pól jest pole Message-id. W tym przykładzie pokażemy w jaki sposób wykorzystać to pole do własnych potrzeb, i zaszyć w nim np. dane jakiej transakcji w systemie rozliczeniowym dotyczyła dana wiadomość.

 

Czym jest pole Message-Id?

Jest to pole posiadające unikalny numer wiadomości z danego serwera <idwiadomosci@domena.com> ustalana przez serwer nadawcy. Dzięki temu możemy sprawdzać co dzieje się z naszą wiadomości na poszczególnych etapach dostarczania wiadomości do użytkownika końcowego.

 

Jak budować własne Message-Id?

Po pierwsze musimy zadbać o to aby identyfikator naszej wiadomości był zawsze unikalny. Oraz podobnie jak adres e-mail miał dopisaną domenę: id_wiadomości@domena.pl, dodatkowo nasz unikalny numer musimy dodać pomiędzy znacznikami <> czyli: <id_wiadomości@domena.pl>. Aby dowiedzieć się więcej przeczytaj o standardach RFC.

 

Trochę praktyki

Pole Message-id poza samą identyfikacją może pełnić także inne role. Zastanówmy się co chcielibyśmy przekazywać w polu Message-Id. Załóżmy że będziemy wysyłać wiadomość dla klienta sklepu internetowego, który właśnie dokonał zakupu. A podstawą dla naszego unikalnego klienta będzie: numer transakcji (oid), numer użytkownika (uid) oraz data wysłania wiadomości (time).

Dane są zakodowane w formacie JSON

Oczywiście wysłanie danych w takiej formie mija się z celem, ponieważ bardzo prawdopodobne jest to iż taki identyfikator zostanie odrzucony przez serwer. Można zakodować je przy użyciu Base64 w rezultacie uzyskami następujący ciąg znaków:

Pamiętaj o tym aby ciąg znaków nie był za długi, staraj się umieszczać tylko niezbędne dane w możliwie najkrótszym formacie.

Posiadając taki ciąg znaków możemy zabrać się za wysyłkę wiadomości. Napiszmy prosty skrypt do sprawdzenia naszej wysyłki z własnym numerem id wiadomości:

Po poprawnej wysyłce sprawdzamy pocztę:

Jak widać Message-id został przyjęty przez serwer ( w tym przypadku GMail ), możemy sprawdzić czy takie Message-id istnieje już w systemie, np. przy użyciu API. Aby rozpocząć działanie z API zobacz ten artykuł. Napiszmy krótki skrypt który zrobi to za nas oraz wyświetli rezultat:

A oto i rezultat:

Następnie niemal jedną linijką kodu można odkodować nasze Message-id do stanu pierwotnego:

W rezultacie dostaliśmy to: