Problémy s diakritikou při odesílání e-mailu

Při vývoji jednoho projektu jsem narazil na problém s diakritikou e-mailů odesílaných funkcí mail. Přestože měla zpráva nastaveno správné kódování obsahu i MIME type, diakritika v předmětu byla nečitelná.

Nakonec jsem přišel na to, že kódování obsahu se týká jen těla zprávy. Kódování předmětu se musí definovat zvlášť.

Stačí k tomu tato formulka:

"=?utf-8?B?".base64_encode($subject)."?="

Celý skript pro odesílání mailů pak vypadá nějak takto:


$headers  = "MIME-Version: 1.0n";
$headers .= "Content-type: text/html; charset=utf-8n";
$headers .= "Content-Transfer-Encoding: base64n";
$headers .= "From: "Mojeprani" n";
$text = base64_encode($text);

$subject = "=?utf-8?B?".base64_encode($subject)."?=";

mail($to,$subject,$text,$headers);

Takto odeslaný mail má již diakritiku v pořádku.