Zdravim,
z webu posílám mail pomoci fce mail(). Pokud mail pošlu na mail u Centrum.cz, tak diakritika je v pořádku. Ale na Seznam.cz jsou všechny znaky ve jméně a předmětu přepsány otazníkem. Samotný text zprávy je v pořádku.
script php neni nijak zvlášť oštetřen to co dojde v $_POST předávám fci mail()
když přijde mail na seznam hlavička s předmětem a odesílatelem vypadá asi takto
[code]Subject: =?us-ascii?Q?TEST=205=20=3F=3F=3F=3F=3F=3F=3F?=
From: =?us-ascii?Q?Luk=3F=3F?=[/code]
centrum vyplivne toto [code]Subject: TEST 5 +ěščřýáíé=
From: Lukáš[/code]
nějaký řešení?
Čeština v předmětu a odesílatele má jiná pravidla než samotný obsah. Tam se to musí kódovat v quoted-printable nebo v base64.
to jsem neco zkousel co jsem pohledal na netu ale nic nefungovalo
Zkus tohle ;)
function moje($recipient, $subject, $message, $header)
{
$subject = '=?utf-8?B?'.base64_encode($subject).'?=';
$header .= 'Content-Transfer-Encoding: base64';
if(mail($recipient, $subject, $message, $header)) return true;
return false;
}
Jako ukázka by to mohlo stačit.
V PHP manuálu funkce mail() [http://php.net/manual/en/function.mail.php] jsou nějaké příklady na použití češtiny v předmětu. Tak si je pročtěte a odzkoušejte.
mně na seznam nefunguje pouze š a ž
Nero: Určitě jsi zapomněl na "ť".
Je jasné, že použití znakové sady us-ascii na češtinu je nesmysl. Standardní je pouze iso-8859-2 a utf-8.
Na Centrum to prošlo, protože bylo zřejmě použito ESMTP místo staršího SMTP. Ovšem není dobré se na to spoléhat.
$subject= mb_encode_mimeheader($subject,"UTF-8", "B");
nebo
$subject= mb_encode_mimeheader($subject,"UTF-8", "Q");
Nero: A podíval ses i na odkaz, který jsem uvedl?
Jinak použití kódu není jen tak. Zde musí zasáhnout i mozek člověka. A to ve věci určení kódování. Tvůrce musí vědět v jakém kódování má vstupní text a v jakém kódování očekává výstup. Bez těchto informací může dosáhnout pouze stejného nebo horšího efektu.
Z tvé reakce usuzuji, že používáš špatnou kombinaci kódování.
Taky mi teď docvaklo, že Nero nejspíš v textech používá sadu Windows-1250 a kóduje ji jako ISO-8859-2. V tom případě ten text doporučuji nejprve překódovat.
BTW: už nějakou dobu používám téměř výhradně UTF-8, proto jsem tak napsal i příklad.
jj, ale s tím rozdílem že já to posílám na gmail + seznam, možná by bylo možný založit i druhou adresu na gmailu a nemusel bych to ani překódovávat... ale nevím, jestli na to ten sruhej joe přistoupí. každopádně to zkusím překódnout, ale pokud to nevyjde, tak to asi nechám tak
hustý. Až na to, že mě to vypíše na seznamu /ĄĘ3yöœ…Č€ €ťh místo vocozefachcišžťúů
Zřejmě jsi to moc nepochopil.
Aby to fungovalo jak má, tak musíš vědět co použít a co nastavit. Takhle dosáhneš jen toho, co jsem již psal "dosáhnout stejného nebo horšího efektu."
Nejdříve si zjisti, v jakém kódování je vstup (pravděpodobně windows-1250). Jednoduše, v jakém kódování je PHP skript, případně v jakém kódování je formulář. Od toho vyjdi. Na výstupu (předmět emailu) pak zvolíš kódování, kterým tu zprávu odešleš. Většinou se používá iso-8859-2 nebo utf-8.
Takže co udělat. Nejdříve převedeme text z windows-1250 na iso-8859-2 a pak to převedeme podle kitova návodu. Akorát místo utf-8 použiješ iso-8859-2.
Jestli dodržíš tyto pravidla, pak se bude předmět zobrazovat správně. Ba co víc, bude jedno, jakou mailovku použiješ.
Mám podobný problém. Když posílám ze stránek (http://bookowna.zaridi.to/) email na emailovou adresu info@bookowna.zaridi.to, tak se mi nezobrazi Š a Ž. Ale Č se zobrazuje a to mi přijde divný.
Aron: na tom není nic divného, znakové sady ISO-8859-1 a Windows-1250 jsou prostě podobné (například č mají na stejném místě, š a ž nikoli). Velmi stručné informace http://www.jakpsatweb.cz/cestina.html
Co se týče řešení, posíláš e-maily ve špatném kódování (tzn. informace v hlavičce e-mailu a samotný text navzájem neodpovídají). Nejlépe uprav hlavičku posílaných e-mailů (ale protože jsi nenapsal nic podrobnějšího, konkrétnější řešení ze mě nedostaneš ;).