PHP mail
Dokument .php kodowany ISO-8859-2
Standardowa funkcja wysyłania maila przez PHP ale z dodanym konwertowaniem znaków z utf-8 na iso-8859-2. Przydatne np. przy przetwarzaniu i wysyłaniu maila z Flasha. W przykładzie jest zmiana znaków dla treści i tematu, ale można też zmienić dla pozostałych rzeczy. Jeśli są problemy z wysłaniem maila należy spróbować wyrzucić \r z każdej linii.
$odKogo=""; // e-mail nadawcy
$imie=""; //imie nadawcy
$doKogo=""; //adres odbiorcy
//nagłówki maila
$headers = "Return-Path: <mail_zwrotny>\r\n";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-2 \r\n";
$headers .= "From: \"$odKogo\" <mail_odKogo>\r\n";
$headers .= "Reply-To: \"$odKogo\" <mail_reply_DoKogo>\r\n";
$headers .= "X-Priority: 1\r\n";
$headers .= "X-MSMail-Priority: High\r\n";
//konwertowanie z utf-8 na iso 8859-2
$tresc = stripslashes($tresc);
$tresc = strtr($tresc, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
$temat = stripslashes($temat);
$temat = strtr($temat, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
//wysyłanie maila
mail("$doKogo", "$temat","$tresc",$headers);
Skrypcik znaleziony na forum http://www.flashroom.com
Dokument .php kodowany UTF-8
W przypadku takich dokumentów wszystko działa poprawnie, ale miałem problem z tematem, który nie był kodowany poprawnie. Z powodu kodowania dokumentu php w UTF-8 reszta dokumentu nie wymagała żadnych modyfikaji (nagłówki też nie, chociaż to dziwne). Złe kodowanie tematu, rozwiązał taki skrypt:
function mail_escape_header($subject){
$subject = preg_replace('/([^a-z ])/ie', 'sprintf("=%02x",ord(StripSlashes("\1")))', $subject);
$subject = str_replace(' ', '_', $subject);
return "=?utf-8?Q?$subject?=";
}
i adresik do źródła: http://code.iamcal.com/php/utf8_mail/readme.txt
Prawidłowo kodowany temat z użyciem PHP - metoda 2
W poniższym przykładzie zamiast UTF-8 można wstawić np.: ISO-8859-2 i też będzie działało. Przykład z http://www.webdiary.pl/technologie+art.id+40.htm
<?php
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
?>