Odeslání mailu v PHP - špatná diakritika v předmětu zprávy

Předem se přiznám, že nejsem zběhlý v PHP a snažím se odstranit chybu z našich stránek www.novaskolabrno.cz

Na stránkách hostovaných u banan.cz (verze PHP: 5.3) je funkce k odeslání objednávky do mailu. V "Předmětu" zprávy a v "Od koho", který dorazí přes náš poštovní server do outlooku, se místo diakritiky zobrazí velké X. Takhle chybně se to zobrazuje i přes webmail. Pošta, která dorazí do poštovní schánky na seznamu či gmailu se zobrazuje správně s diakritikou.
Tělo mailu má diakritikou v pořádku

PHP stránka je uložena v kódování UTF-B (bez BOM). Kód vypadá následovně:

            $content = $mpdf->Output('', 'S');

            $content = chunk_split(base64_encode($content));
            $mailto = $email;
            $from_name = 'Nová škola Brno';
            $from_mail = 'interaktivky@ucdis.cz';
            $replyto = 'interaktivky@ucdis.cz';
            $uid = md5(uniqid(time()));
            $subject = 'IUč zdarma - sériová čísla';
            $message = $msg;
            $filename = 'iuc-seriova-cisla'.date('d-m-Y-H-i', time()).'.pdf';

            $header = "From: ".$from_name." <".$from_mail.">\r\n";
            $header .= "Reply-To: ".$replyto."\r\n";
            $header .= "MIME-Version: 1.0\r\n";
            $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
            $header .= "This is a multi-part message in MIME format.\r\n";
            $header .= "--".$uid."\r\n";
            $header .= "Content-type:text/plain; charset=utf-8\r\n";
            $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
            $header .= $message."\r\n\r\n";
            $header .= "--".$uid."\r\n";
            $header .= "Content-Type: application/pdf; name=\"".$filename."\"\r\n";
            $header .= "Content-Transfer-Encoding: base64\r\n";
            $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
            $header .= $content."\r\n\r\n";
            $header .= "--".$uid."--";

            $is_sent = @mail('interaktivky@ucdis.cz', $subject, "", $header);

echo json_encode($result);     

Předem děkuji za radu
Roman



Fantomas

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #2 kdy: 11. 11. 2015, 20:17:06 »
Neco podobneho jsem resil a nakonec jsem pouzil kondovani iso8859-2, to jedine fungovalo spravne v subjektu i v tele zpravy.

Dadko

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #3 kdy: 11. 11. 2015, 20:34:37 »
Predmet mailu v PHP sa musi kodovat, v predmete sa mozu vyskytovat len ASCII znaky, vsetko mimo ASCII je chybne kodovane a moze sposobit pri chybne nastavenom spam filtri aj odmietnutie mailu.


Honza

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #4 kdy: 11. 11. 2015, 20:49:48 »
To se ještě ve 21.století sestavuje e-mail v PHP ručně?


Kit

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #5 kdy: 11. 11. 2015, 22:18:01 »
To se ještě ve 21.století sestavuje e-mail v PHP ručně?

Máš na mysli imap_mail_compose() nebo má snad standardní PHP něco lepšího?

TKL

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #6 kdy: 11. 11. 2015, 23:36:14 »
function mime_header_encode($retezec, $encoding = "utf-8") {
   return "=?$encoding?Q?" . imap_8bit($retezec) . "?=";
}

$is_sent = @mail('interaktivky@ucdis.cz', mime_header_encode($subject), "", $header);

TKL

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #7 kdy: 11. 11. 2015, 23:36:59 »
To se ještě ve 21.století sestavuje e-mail v PHP ručně?

A existuje snad ve 21. století nějaký rozumný důvod, proč to tak nedělat?

opiiio


Lol Phirae

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #9 kdy: 11. 11. 2015, 23:45:43 »
Zkuste swift nebo phpmailer, usetrite cas

Takhle mu kazit radost ze znovuvynalezeni hranateho kola...  ;D

Kit

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #10 kdy: 12. 11. 2015, 00:26:47 »
Zkuste swift nebo phpmailer, usetrite cas

Žádný zázrak. Uvnitř je obyčejná funkce mail() obalená obrovskou hromadou sr*ček a ještě větší hromadou vnějších závislostí.

Dzavy

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #11 kdy: 12. 11. 2015, 01:08:31 »
Zkuste swift nebo phpmailer, usetrite cas

Žádný zázrak. Uvnitř je obyčejná funkce mail() obalená obrovskou hromadou sr*ček a ještě větší hromadou vnějších závislostí.

Ale hovno. PHPMailer umi primo SMTP, sifrovani, podepisovani, prilohy, vsechno a poslani tohodle mailu je s nim na tri radky. Zavislosti zadny. Fakt nechapu, jak to dneska muze nekdo matlat rucne...

Kit

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #12 kdy: 12. 11. 2015, 01:53:30 »
Ale hovno. PHPMailer umi primo SMTP, sifrovani, podepisovani, prilohy, vsechno a poslani tohodle mailu je s nim na tri radky. Zavislosti zadny. Fakt nechapu, jak to dneska muze nekdo matlat rucne...

Otázka zní: Potřebuje tazatel, aby mailer uměl SMTP, šifrování a podepisování? Opravdu potřebuje kvůli odeslání obyčejného e-mailu takovou obrovskou knihovnu?

Dzavy

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #13 kdy: 12. 11. 2015, 02:02:13 »
Otázka zní: Potřebuje tazatel, aby mailer uměl SMTP, šifrování a podepisování? Opravdu potřebuje kvůli odeslání obyčejného e-mailu takovou obrovskou knihovnu?

Zapomnel jsem zminit, ze mimojine jeste resi kodovani ;) PHPMailer je v jednom souboru a nema zadny zavislosti a proste funguje. Timhle stylem se muzeme ptat, jestli opravdu potrebuje obrovske PHP, kdyz muze ten web naprogramovat v C nebo rovnou v assembleru, fakt na palici todleto.

Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
« Odpověď #14 kdy: 12. 11. 2015, 08:06:54 »
Otázka zní: Potřebuje tazatel, aby mailer uměl SMTP, šifrování a podepisování? Opravdu potřebuje kvůli odeslání obyčejného e-mailu takovou obrovskou knihovnu?
Ty ses chytrej jak Jirsak.
Děkuji za možnost editace příspěvku.