Autor Zpráva
RD
Profil *
Mám web a data v MySQL v UTF-8, ale když potřebuji scriptem vyjet data z DB a poslat přes funkci mail() zobrazuje se špatně diakritika, zoušel jsem to přes iconv: $subjekt = iconv('UTF-8', 'iso-8859-2', $_POST[subjekt]); ale stejně se diakritika rozhodí, v jakém formátu posílat český text přes funkci mail()?
Charlie
Profil
Mail v češtině se standardně posílá v ISO-8859-2. Zkus tvoji funkci přepsat:
iconv('UTF-8', 'ISO-8859-2', $_POST[subjekt]);

Možná je to case insensitive, tzn. záleží na velikosti písma.
Acci
Profil
A nebo vyzkoušej ještě
iconv('UTF-8', 'ISO8859-2', $_POST[subjekt]);
Charlie
Profil
Acci, jsem si jistý, že moje řešení funguje, tvojí verzi jsem nikde neviděl. Ale neznamená to, že by teoreticky nemohla fungovat.
Acci
Profil
Někdy je také dobré použít ISOXXXX-X místo ISO-XXXX-X. Verze knihoven se liší a tak musíte trochu experimentovat s tím, kde a jaký řetězec použít.
Citace z Intervalu (PHP pro pokročilé - ICONV)
Charlie
Profil
Aha, promiň. Tohle si budu pamatovat, je to docela dobrý poznatek.
RD
Profil *
- tak outlook 2003 subjekt rozhodí, tělo je OK
- gmail nezkousne ani tělo ani subjekt :(

není někde ještě nějaký zádrhel?
Acci
Profil
Tak se podiv na tu zprávu na Gmailu. Nahoře dej More Options » Show original a podiv se, co je napsáno za Content-Type:
Nai Dzet Quiv
Profil
BTW, myslíte si, že je špatné posílat e-mail v UTF-8? (Mně to přijde OK - Thunderbird, ale co ostatní?)
llook
Profil
Posílej to normálně v UTF-8 s patřičným content-type:

mail($to, $subject, $message, 'Content-Type: text/plain; charset=utf-8');


Problém je s předmětem, ten myslím musí být v quoted printable tvaru (protože content-type se netýká hlaviček) a tomu moc nerozumím.
Nai Dzet Quiv
Profil
pro llooka:
Já vím, jak to odeslat. Šlo mi o to, jak je to vhodné pro příjemce pošty. V tomto se nevyznám, ale nikde jsem četl, že e-maily je nejlepší odesílat v ISO-8859-2... Technicky to udělat umím.
Předmět musí být bez diakritiky.
Charlie
Profil
S tím předmětem by se to dalo vyřešit - nahradit všechny složité znaky entitami.
RD
Profil *
díky, už to sviští včetně subjektu, někde jsem našel jen pro doplnění:

$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-Type: text/plain; charset=utf-8\r\n";
$headers.= "From: od koho <".$_POST[odesilatel].">\r\n";
Nai Dzet Quiv
Profil
Ale ty e-maily někomu přicházej v divnym kódování (= pomatený znaky). Na Thunderbird i na Seznam mi to přijde OK. nechápu, proč, vše je nastaveno správně...
babča [www.oplatek.org]
Profil *
Jede to OK, celý web mám v utf-8.

udělal jsem si funkci...
function mail_header_encode($text)

{
return "=?utf-8?B?".base64_encode($text)."?=";
}


vychazel jsem z wikipedie (velmi dobry clanek) http://en.wikipedia.org/wiki/MIME#Encoded-Word

$text muze byt normalne v utf-8, s nim se nic delat nemusi.
$from a $predmet, protoze jsou v hlavicce, ktera ma pevne dane kodovani ASCII, se musi prekodovat touto fci.

$mail_odeslan = mail($prijemce, mail_header_encode($predmet), $text, "From: ".mail_header_encode($odesilatel)."\nMIME-Version: 1.0\nContent-transfer-encoding: 7bit\nContent-Type: text/plain; charset=\"utf-8\"");


Hodne stesti. :)
Podekujte za pomoc ;)
krteczek
Profil
RD: jen upřesním že pořadí konce řádku a nový řádek čili: \n\r
tak jak to máš to některé emailové služby nemusejí příjmout. (stalo se mi to, hledali jsme chybu a na toto jsme přišli: \r\n je špatně!
krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.

0