Stránka 1 z 1

[PHP] mail() a diakritika - VYŘEŠENO

Odeslat příspěvekNapsal: 24. 2. 2006 16:21
od netrunner
Hoj.
Snažím se posílat email přes PHP a funkci mail. Nedaří se mi ale žádným způsobem rozchodit posílání diakritiky a to jak v předmětu tak v textu:
Kód: Vybrat vše
<?php
$hlavicky = "From: aaa@example.com\r\n";
$hlavicky .= "Reply-To: aaa@example.com\r\n";
$hlavicky .= "Return-Path: aaa@example.com\r\n";
$hlavicky .= "MIME-Version: 1.0\r\n";
$hlavicky .= "Content-Type: text/plain; charset=iso-8859-2\r\n";
$hlavicky .= "Content-Transfer-Encoding: 8bit\r\n";
$predmet = "ěščřžýáíé";
$text = "Příliš žluťoučký kůň pěl ďábelské ódy.";
mail("bbb@example.com", $predmet, $text, $hlavicky)
?>
[/code]


A dojde prostě tohle:
ě�čř�ýáíé
Příli� �lu�oučký kůň pěl ďábelské ódy.

Zkoušel jsem všechny možné kódování od cp1250 po utf8, ale prostě nic.
Nevíte někdo co s tím? Jsem už naprosto zoufalej.... Všude akorád čtu, že tam má být kódování, ale já fakt nevím co s tím. Vzal sem i kompletní hlavičky z mailu, který jsem sám sobě poslal (bez "X-" hlaviček a recieved samozřejmě) ale nic....
Díky za každý nápad.


// mbing : Téma přesunuto ● z Programování do Tvorba webových stránek a aplikací.

Odeslat příspěvekNapsal: 24. 2. 2006 20:15
od 2ge
skus vyhodit $hlavicky .= "Content-Transfer-Encoding: 8bit\r\n"; a skusaj dalej :)

Odeslat příspěvekNapsal: 24. 2. 2006 20:16
od netrunner
To bohužel nepomůže, tak jsem to zkoušel...

Odeslat příspěvekNapsal: 24. 2. 2006 20:35
od Fenix
Ja jsem to pred casem resil. Vysledek si muzes stahnout z http://kdf.mff.cuni.cz/~janek/php/cz_mime_mail.zip

je to dost prasacky kod, predpoklada, ze text mailu je v iso-8859-2, ale funguje spolehlive. Vola se funkce cz_mime_mail()

Tahej rychle, dlouho to tam nenecham.

P.S. posilani priloh to nepredpoklada a neumi.

Odeslat příspěvekNapsal: 24. 2. 2006 21:22
od netrunner
No předpokládá je hezký, ale mě to prostě nechodí. Neexistuje nějaký funkce v PHP která by text převedla do ISO, abych měl sichr, že to chodí správně?

funkce pro odesilani emailu php

Odeslat příspěvekNapsal: 24. 2. 2006 21:55
od malvoj
Kód: Vybrat vše
function sendMail($from, $to, $mail_subj, $mail_txt, $coding)
   {
   $headers = '';
   if ($coding == 1){
      $mail_txt = StrTr($mail_txt, "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE");
   }
   $headers .= "From: $from\n".
         "Return-Path: $from\n".
         "MIME-Version: 1.0\n".
         "Content-Type: text/plain; charset=\"iso-8859-2\"\n".
          "Content-Transfer-Encoding: 8bit";
         @Mail($to, $mail_subj, $mail_txt, @$headers);
   }


jde o to coding==1
hodne stesti

Odeslat příspěvekNapsal: 24. 2. 2006 23:22
od netrunner
malvoj:
geniální, jednoduché, naprosto super.
Díky moc!

Odeslat příspěvekNapsal: 25. 2. 2006 09:09
od wojta
Je dobré použít na převádění třeba iconv.

Odeslat příspěvekNapsal: 25. 2. 2006 11:39
od map
Používám třídu HTML Mime Mail for PHP, která umí vše potřebné, včetně posílání příloh a bez problémů.

Odeslat příspěvekNapsal: 25. 2. 2006 12:06
od Zorg
Přesně tak, dělat to pomocí klasické funkce mail() je trochu krkolomné, buď HTML Mime Mail nebo další dobrá třída je k nalezení na SourceForge. Ta má výhodu, že je pod LGPL licencí oproti GPL licenci Mime Mailu.

Odeslat příspěvekNapsal: 3. 3. 2006 21:46
od 2ge
poskusal som rozne Classy (tiez posielam mail, ale vsetko UTF-8 kodovanie). Velmi sa mi pacilo
Kód: Vybrat vše
<?php
$subject = "subject";
$message = "message"

//dont forget quotes around "name", else it won't be displayed correctly in utf-8
$from = "From: \"".$_POST['name']."\" <".$_POST['mail'].">";

mb_language('Neutral');
mb_internal_encoding("UTF-8");
mb_http_input("UTF-8");
mb_http_output("UTF-8");
mb_send_mail($to, $subject, $message, $from);

?>


posle to dokonca aj korektne :) takze snad to niekomu pomoze...

Odeslat příspěvekNapsal: 11. 3. 2006 00:26
od Capricho
moc mi tohle scriptování nejde nemohl by mi někdo poradit konkrétní už přednastavený balíček který se dá stáhnout z netu.

Re: [PHP] mail() a diakritika - VYŘEŠENO

Odeslat příspěvekNapsal: 11. 3. 2006 08:32
od Christof
netrunner píše:Hoj.
$hlavicky .= "Content-Type: text/plain; charset=iso-8859-2\r\n";
A dojde prostě tohle:
ě�čř�ýáíé
Příli� �lu�oučký kůň pěl ďábelské ódy.
/quote]


A urcite je ten text v kodovani ISO-8859-2? ISO-8859-2 a Windows-1250 se totiž liší právě v š,ž,ť

Odeslat příspěvekNapsal: 20. 3. 2006 19:13
od cM
Mam len otazocku k malvojovmu rieseniu.. ako zistim ci sa mail podarilo odoslat?

$m = sendMail($email, "xxx@yyy.zz", "subject", $Mail, 1);

mi $m nevracia hodnotu true, aj ked mail odosle. Ked pouzivam klasicku fciu Mail tak mi to vracia hodnotu true.

Neviete v com moze byt problem (pravdepodobne medzi klavesnicou a stolickou, ale ak viete pomoct, pomozte ;) )?

Odeslat příspěvekNapsal: 27. 3. 2006 10:41
od 2ge
v tej funkcii co pouzivas je na konci:
Kód: Vybrat vše
@Mail($to, $mail_subj, $mail_txt, @$headers);

tak tam dohod return a pojde to asi, ci nie ? :)