[PHP] Jak zakodować tekst w standardzie quoted printable, który przydaje się podczas wysyłania listów?
Chcesz zakodować tekst zawierający polskie znaki do standardu quoted printable, aby umożliwić przesłanie np. listu zawierającego tytuł z polskimi znakami.
Bardzo często zachodzi konieczność zakodowania tekstu do standardu quoted printable, ponieważ wiele znaków (w tym polskie znaki narodowe) mogłoby powodować problemy podczas przesyłania ich w systemach wykorzystujących np. 7-bitowe kodowanie. Stąd najczęściej spotkasz się z takim kodowaniem w poczcie elektronicznej.
Zobacz co zrobić aby zakodować tekst do postaci quoted printable, wyglądającym np. tak: "=?ISO-8859-2?Q?=AFyczenia =A6wi=B1teczne?=". W przykładzie zakodujemy w ten sposób tytuł listu, aby program pocztowy mógł zobaczyć w tytule polskie znaki.
Za pomocą funkcji imap_8bit() kodujemy dowolny ciąg znaków:
<?
$tytul = imap_8bit("Życzenia Świąteczne");
?>
wartość zmiennej $tytul: =AFyczenia =A6wi=B1teczne
Aby można było skorzystać z funkcji imap_8bit() należy w pliku konfiguracyjnym php.ini uaktywnić moduł imap w sekcji extension.
Na początku i na końcu tematu w listach dodawane są znaki =? i ?=. Na początku dodawana jest również informacja o standardzie kodowania polskich znaków ISO-8859-2?Q?. Trzeba więc nasz łańcuch znaków uzupełnić o te informacje:
<?
$tytul = "Życzenia Świąteczne";
$tytul = imap_8bit($tytul);
$tytul = "=?ISO-8859-2?Q?$tytul?=";
// wypisanie na ekran
echo $tytul;
// wysłanie maila z zakodowanym tytułem
mail("odbiorca@adres.pl", $tytul, $tresc_listu, $naglowki_dodatkowe);
?>
W razie potrzeby można wybrać dowolny inny standard kodowania polskich znaków (lub innych znaków narodowych). Jeżeli chcesz dokładnie zgłębić sposoby kodowania quoted printable zapoznaj się z dokumentem RFC 2045.
Niektóre starsze programy pocztowe mogą mieć problem z odczytaniem tak zakodowanych tytułów. Wtedy na ekranie zobaczysz "=?ISO-8859-2?Q?=AFyczenia =A6wi=B1teczne?=" - co często ma miejsce na grupach dyskusyjnych, gdy list nie zostanie poprawnie zinterpretowany przez program do zarządzania listami.