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.