Tak další otázka - posílám mejl funkcí mail(). Jako hlavičku zadávám "Content-Type: text/html; charset=iso-8859-2". Všechny moje stránky jsou taky v iso-8859-2 uloženy a mají ho v headu. Přesto když pošlu tento mejl, tak se mi v libovolném poštovním klientu/web-rozhraní kazí diakritika. Čím to je ? Respektive co se s tím dá udělat ?
@!#$, sorry, tohle nemělo mít nadpis Adam !
Gomenne, sorry, entschuldigung :(
Nadpis měl znít "Diakritika v mejlech" !
http://www.kosek.cz/clanky/tipy/qa07.html
Content-Transfer-Encoding: base64
nebo
Content-Transfer-Encoding: quoted-printable
Protože používáme rozšíření MIME, musí se mezi hlavičkami objevit i definice použité verze MIME:
MIME-Version: 1.0
Jako kódování češtiny bychom měli používat pouze iso-8859-2. Text dopisu tedy musíme do tohoto kódování převést. Většina tvůrců webových stránek však pracuje ve Windows, a proto i stránky a skripty píše v kódování Windows. Obě kódování se liší jen nepatrně. V PHP pro převod textu mezi kódováními můžeme s výhodou použít funkci StrTR(). Pokud máme text dopisu převeden do správného kódování, musíme ještě přidat hlavičku, která určuje použité kódování pro tělo dopisu.
Content-Type: text/plain; charset="iso-8859-2"
"V PHP pro převod textu mezi kódováními můžeme s výhodou použít funkci StrTR()."
Vhodnější se mi jeví iconv().
Hm, tak jsem to zkusil - tělo zprávy to pošle v pořádku, ale předmět ne.
$message = Base64_Encode("
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\"/>
</head>
<body>Tělo zprávy</body>
");
$headers = "MIME-Version: 1.0\n".
"Content-Type: text/html; charset=\"iso-8859-2\"\n".
"Content-Transfer-Encoding: base64\n";
mail($email, "Předmět s diakritikou -ěščpýšč", $message, $headers);
A posílá to správně tělo, ale špatně předmět.
http://www.webzdarma.cz/forum/read.php?f=2&i=22037&t=22028
tohle by stalo za to dat do faq. nemyslim jen ten predmet ale vubec cestina v mailu. nechcete to nekdo zpracovat? me samotnymu se do toho nejak moc nechce... (nenapadny pohvizdujici)
Tybláho... A víte někdo proč to tak je ? Ten hroznej string "=?iso-8859-2?Q?".imap_8bit($subject)."?=" je fakt špatnej...
já bych řekl že kódování pro předmět je speciální případ :)
co sem koukal do záhlaví, tak je tam například..
Subject: =?iso-8859-2?Q?Vybornej=20=F8et=ECzovej=20mejl=21=20=3AD?=
no.. z toho mi vyplývá: už si zkoušel funkci ord() .. mohlo by to pomoct, protoze ten zapis predmetu je podobnej ascii .. akorat misto procent vidim rovna|se..
..taky je moznost ze tu zvatlam nesmysly, coz je daleko pravdepodobnejsi.
Trochu jsem googlil a vypadlo mi tohle
$clearsubject = "něco ěščřžýáíé";
$encodedsubject = base64_encode ($clearsubject);
$subject = "=?iso-8859-2?B?$encodedsubject?=";
(z http://www.abclinuxu.cz/forum/show/109707 )