Kodowanie nagłówków to zbiorcze określenie metod zapisu znaków narodowych w polach technicznych e-maila.
Po co stosuje się kodowanie nagłówków wiadomości
Kodowanie nagłówków to zbiorcze określenie metod zapisu znaków narodowych w technicznych polach wiadomości e-mail. Nagłówki takie jak Subject, From czy To są analizowane przez serwery i programy pocztowe jako strukturalne elementy wiadomości, a nie jako zwykły tekst wyświetlany w treści listu. Starsze założenia standardu poczty internetowej opierały się na znakach ASCII, dlatego polskie litery, na przykład „ą”, „ę”, „ł” i „ź”, wymagają odpowiedniego przedstawienia, aby mogły przejść przez kolejne elementy transportu bez utraty informacji.
W praktyce program pocztowy może zakodować nazwę nadawcy albo temat w formie tak zwanego encoded-word, zdefiniowanego w RFC 2047. Typowy zapis ma postać =?UTF-8?B?...?= albo =?UTF-8?Q?...?=. Pierwszy człon określa zestaw znaków, drugi metodę kodowania, a ostatni zawiera właściwe dane. Odbiorca, który obsługuje ten standard, dekoduje zapis i pokazuje użytkownikowi normalny tekst, natomiast narzędzie techniczne może nadal prezentować surową wartość nagłówka.
Encoded-word, charset oraz metody B i Q
W zapisie encoded-word parametr charset wskazuje sposób zamiany znaków na bajty. Współcześnie najczęściej używa się UTF-8, ponieważ obejmuje znaki alfabetu polskiego i większość innych alfabetów. Parametr metody określa dalsze kodowanie tych bajtów. Wariant B korzysta z Base64 i jest wygodny dla tekstu zawierającego wiele znaków spoza ASCII. Wariant Q przypomina kodowanie quoted-printable, ale w nagłówkach ma własne reguły: znak spacji zapisuje się jako podkreślenie, a bajty znaków specjalnych przedstawia się w postaci procentopodobnej, na przykład =C5=82 dla części reprezentacji znaku w UTF-8.
Encoded-word nie jest dowolnym tekstem, który można wstawić w każde miejsce nagłówka. Musi mieć poprawną składnię, odpowiednie ograniczenie długości pojedynczego elementu oraz właściwe umiejscowienie zależne od rodzaju pola. Program pocztowy powinien umieszczać taki zapis między innymi w polu Subject lub przy wyświetlanej nazwie nadawcy, ale nie powinien traktować go jako sposobu kodowania całego adresu e-mail. Adres zawierający znaki spoza ASCII wymaga obsługi rozszerzeń międzynarodowej poczty, a nie tylko zakodowania nazwy prezentowanej obok adresu.
Różnica między nagłówkiem, treścią i międzynarodowym adresem
Kodowanie nagłówków nie należy utożsamiać z kodowaniem treści wiadomości. Treść tekstowa jest opisywana przez nagłówki MIME, między innymi Content-Type i Content-Transfer-Encoding. Dla przykładu wiadomość może mieć Content-Type: text/plain; charset=UTF-8 oraz Content-Transfer-Encoding: quoted-printable albo base64. Te ustawienia określają sposób przesyłania zawartości listu, ale nie zastępują encoded-word używanego w polu Subject lub w nazwie wyświetlanej nadawcy.
Osobną kwestią jest przesyłanie międzynarodowych adresów e-mail. RFC 6531 opisuje rozszerzenie SMTPUTF8, które pozwala serwerom obsługującym ten mechanizm przyjmować adresy zawierające znaki Unicode. RFC 6532 określa możliwość używania znaków UTF-8 w nagłówkach wiadomości w środowisku obsługującym pocztę międzynarodową. Jeżeli któryś serwer pośredniczący nie obsługuje wymaganych rozszerzeń, mogą wystąpić problemy z dostarczeniem albo wyświetlaniem wiadomości. Sam fakt, że klient potrafi pokazać polskie znaki, nie dowodzi jeszcze, że cała trasa pocztowa zachowuje je poprawnie.
Objawy błędnego kodowania w programie pocztowym
Nieprawidłowe kodowanie może objawiać się tematem wyświetlanym jako ciąg znaków zaczynający się od =?UTF-8?, zastąpieniem polskich liter znakami zapytania albo pojawieniem się tak zwanego „krzaczka”, gdy bajty UTF-8 zostaną odczytane jako inny zestaw znaków. Warto wtedy porównać wiadomość w kilku miejscach: w widoku programu pocztowego, w źródle wiadomości oraz w webmailu. Jeżeli surowy nagłówek zawiera poprawne encoded-word, a tylko jeden klient pokazuje błędny tekst, przyczyną jest zwykle jego parser, ustawienie kodowania lub nieaktualna wersja programu.
Podczas diagnostyki można sprawdzić pełne nagłówki, zwracając uwagę na pola Subject, From, Content-Type i ewentualny parametr SMTPUTF8 w komunikacji serwera. Nie należy ręcznie zmieniać zakodowanego tekstu bez znajomości struktury wiadomości, ponieważ pojedynczy znak może zajmować kilka bajtów, a nieprawidłowa modyfikacja może uszkodzić cały nagłówek. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC, w tym diagnostyką programów pocztowych, ustawień kodowania oraz problemów z wyświetlaniem wiadomości na tych urządzeniach.