Fórum Root.cz

Hlavní témata => Server => Téma založeno: novaskola 11. 11. 2015, 14:57:56

Název: Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: novaskola 11. 11. 2015, 14:57:56
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
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: ja 11. 11. 2015, 15:24:54
http://stackoverflow.com/questions/4389676/email-from-php-has-broken-subject-header-encoding
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Fantomas 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.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Dadko 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.

Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Honza 11. 11. 2015, 20:49:48
To se ještě ve 21.století sestavuje e-mail v PHP ručně?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 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?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 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);
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 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?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: opiiio 11. 11. 2015, 23:43:48
Zkuste swift nebo phpmailer, usetrite cas

http://swiftmailer.org/docs/introduction.html
https://github.com/PHPMailer/PHPMailer
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lol Phirae 11. 11. 2015, 23:45:43
Zkuste swift nebo phpmailer, usetrite cas

Takhle mu kazit radost ze znovuvynalezeni hranateho kola...  ;D
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 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í.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Dzavy 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...
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 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?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Dzavy 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.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: to_je_jedno 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.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: novaskola 12. 11. 2015, 15:23:46
To je přesně to co jsem potřeboval s ohledem na moje téměř nulové znalosti PHP.
DÍKY, DÍKY, DÍKY!!! Funguje to!
Roman
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);
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 13. 11. 2015, 11:36:41
To je přesně to co jsem potřeboval s ohledem na moje téměř nulové znalosti PHP.
DÍKY, DÍKY, DÍKY!!! Funguje to!
Roman
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);

není zač :-)
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 13. 11. 2015, 11:41:40
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.

Třeba jen existují lidi, kteří nechtějí do svých projektů cpát cizí knihovny, z mnoha různých důvodů. Chápu, že to v dnešní době PHP frameworků a různých dalších sraček okolo může vypadat zvláštně, ale opravdu takoví lidé ještě (díkybohu) existují. A tihle lidé nemusí řešit, proč v jejich projektu něco nefunguje podle jejich představ nebo proč se nějaká jeho část chová divně (jinak než by předpokládal), protože díky čistému PHP má (i když za cenu většího množství práce) dokonalý přehled co, proč a jak to funguje.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lucas 13. 11. 2015, 11:59:48
Citace
tihle lidé nemusí řešit, proč v jejich projektu něco nefunguje podle jejich představ nebo proč se nějaká jeho část chová divně (jinak než by předpokládal)

Tohle je strašná naivita. Udržovaná, roky vyvíjená knihovna s velkou komunitou kolem bude řešit většinu běžných problémů a bude mít vychytanou většinu bugů. Když se k takovému kódu dostane někdo cizí, tak je vysoká pravděpodobnost, že už tu knihovnu bude znát a ušetří se díky tomu plno času. Nějaký na koleně stlučený bastl, který znáš možná ty sám, je dobrý tak pro nějakou one-man show, v praxi je ale tohle znovuvynalézání kola jedině na obtíž. Investuj energii tam, kde je to potřeba a neřeš věci, které už jsou tisíckrát vyřešené.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 12:14:25
Citace
tihle lidé nemusí řešit, proč v jejich projektu něco nefunguje podle jejich představ nebo proč se nějaká jeho část chová divně (jinak než by předpokládal)

Tohle je strašná naivita. Udržovaná, roky vyvíjená knihovna s velkou komunitou kolem bude řešit většinu běžných problémů a bude mít vychytanou většinu bugů. Když se k takovému kódu dostane někdo cizí, tak je vysoká pravděpodobnost, že už tu knihovnu bude znát a ušetří se díky tomu plno času. Nějaký na koleně stlučený bastl, který znáš možná ty sám, je dobrý tak pro nějakou one-man show, v praxi je ale tohle znovuvynalézání kola jedině na obtíž. Investuj energii tam, kde je to potřeba a neřeš věci, které už jsou tisíckrát vyřešené.

A ty chyby, které v té knihovně jsou, ti vůbec nevadí?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lucas 13. 11. 2015, 12:32:14
Citace
A ty chyby, které v té knihovně jsou, ti vůbec nevadí?

Vzhledem k tomu, že jí používá 100000x víc lidí, než tu, kterou si sám ubastlíš, tak jich tam oproti ní bude minimum. Víc očí víc vidí. Děláš, jako kdyby to, že si něco ubastlíš sám, znamenalo, že tam nejsou chyby :-D To jsi mě opravdu pobavil.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Dzavy 13. 11. 2015, 12:37:12
Tohle je strašná naivita. Udržovaná, roky vyvíjená knihovna s velkou komunitou kolem bude řešit většinu běžných problémů a bude mít vychytanou většinu bugů. Když se k takovému kódu dostane někdo cizí, tak je vysoká pravděpodobnost, že už tu knihovnu bude znát a ušetří se díky tomu plno času. Nějaký na koleně stlučený bastl, který znáš možná ty sám, je dobrý tak pro nějakou one-man show, v praxi je ale tohle znovuvynalézání kola jedině na obtíž. Investuj energii tam, kde je to potřeba a neřeš věci, které už jsou tisíckrát vyřešené.

Presne tak. Navic kvuli presne takovymdle matlalum je SMTP protokol tam, kde je. Stylem "spatlam to at to funguje" a po pul roce se zacnu divit, ze maily nechodi napr. na gmail...a na vsechny ostatni chodi jenom proto, ze jim je prednejsi spokojeny uzivatel  nez dodrzovani RFC...
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 13:26:46
Třeba jen existují lidi, kteří nechtějí do svých projektů cpát cizí knihovny, z mnoha různých důvodů. Chápu, že to v dnešní době PHP frameworků a různých dalších sraček okolo může vypadat zvláštně, ale opravdu takoví lidé ještě (díkybohu) existují. A tihle lidé nemusí řešit, proč v jejich projektu něco nefunguje podle jejich představ nebo proč se nějaká jeho část chová divně (jinak než by předpokládal), protože díky čistému PHP má (i když za cenu většího množství práce) dokonalý přehled co, proč a jak to funguje.

Tohle se lepičům velmi blbě vysvětluje. Zpravidla argumentují velkým množstvím spokojených uživatelů knihovny či frameworku, ale dovnitř se na ten bastl nepodívají. Hlavně, že jim to "nějak" funguje a když ne, mají to na koho svést.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lucas 13. 11. 2015, 13:53:14
To je marný. Ono vás tohle poblouznění přejde chlapci, nejpozději po několika letech praxe. Taky jsem kdysi takhle chytračil, všechno jsem uměl nejlíp, psal jsem si všechno sám a dneska vám můžu  zodpovědně říct, že to byla jenom hromada blbých keců a promarněného času. Poučte se z chyb ostatních. To je všechno, víc se k tomu nebudu vyjadřovat.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 13. 11. 2015, 14:02:22
Tohle je strašná naivita. Udržovaná, roky vyvíjená knihovna s velkou komunitou kolem bude řešit většinu běžných problémů a bude mít vychytanou většinu bugů. Když se k takovému kódu dostane někdo cizí, tak je vysoká pravděpodobnost, že už tu knihovnu bude znát a ušetří se díky tomu plno času. Nějaký na koleně stlučený bastl, který znáš možná ty sám, je dobrý tak pro nějakou one-man show, v praxi je ale tohle znovuvynalézání kola jedině na obtíž. Investuj energii tam, kde je to potřeba a neřeš věci, které už jsou tisíckrát vyřešené.

Presne tak. Navic kvuli presne takovymdle matlalum je SMTP protokol tam, kde je. Stylem "spatlam to at to funguje" a po pul roce se zacnu divit, ze maily nechodi napr. na gmail...a na vsechny ostatni chodi jenom proto, ze jim je prednejsi spokojeny uzivatel  nez dodrzovani RFC...

Pánové, posílání korektních mailů z PHP podle RFC je kód na pár desítek řádků čistého PHP. PHPMailer znám od začátku jeho vzniku, přesto jsem neměl potřebu nikdy ho použít (kecám, jednou jsem to udělal). Mám vlastní odladěný kód přibližně stejně starý (ale spíše starší, cca. 15 let), jako je PHPMailer, takže opravdu nevidím jediný důvod, proč bych se ho měl vzdát a začít používat nějakou cizí knihovnu, jejíž vývoj nemám absolutně pod kontrolou, a tudíž nemám zaručeno, že za pár měsíců/let bude fungovat tak, jak potřebuji. O veřejně známých zneužitelnostech nemluvě.

Používejte ve svých projektech co chcete, je to jen vaše věc, ale proboha nevnucujte lidem, kteří to dělají jinak, svůj názor jako jediná správný. To vás totiž usvědčuje. Z čeho? Domyslete si sami.

PS: dost často se v podobných souvislostech objevuje kontextově hanlivý pojem "one man show", nejinak tomu bylo v této diskuzi. Nicméně rozmanitost, to je to, co drží celý svět pohromadě. Kdyby bylo vše na světě stejné, dávno by to bylo degenerováno, zneužito, zahubeno. Nejinak tomu je v digitálním světě. Známé projekty jsou úspěšně napadány, protože jejich chyby jsou obecně známy a díky tomu jsou snadno zneužitelné. Nedělám si iluze, že píšu kódy bez chyb. Nicméně jejich praktické zneužití je výrazně složitější, než chyby unifikovaných systémů, ke kterým si stačí stáhnout příslušný předpřipravený exploit. Howgh.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 14:43:59
Pánové, posílání korektních mailů z PHP podle RFC je kód na pár desítek řádků čistého PHP.

Tohle je vlastně patrné už z úvodního dotazu, který obsahuje téměř úplný kód a nic jiného, než čisté PHP, v něm není.

PHP je ve své podstatě vlastně frameworkem. Není nutné nad framework stavět další frameworky.

Citace
PS: dost často se v podobných souvislostech objevuje kontextově hanlivý pojem "one man show", nejinak tomu bylo v této diskuzi. Nicméně rozmanitost, to je to, co drží celý svět pohromadě. Kdyby bylo vše na světě stejné, dávno by to bylo degenerováno, zneužito, zahubeno. Nejinak tomu je v digitálním světě. Známé projekty jsou úspěšně napadány, protože jejich chyby jsou obecně známy a díky tomu jsou snadno zneužitelné. Nedělám si iluze, že píšu kódy bez chyb. Nicméně jejich praktické zneužití je výrazně složitější, než chyby unifikovaných systémů, ke kterým si stačí stáhnout příslušný předpřipravený exploit. Howgh.

Pod tohle se mohu klidně podepsat. Kde ta lůza bere jistotu, že jednotlivec nemá pravdu? Pokud má knihovna 4k řádek a mé vlastní řešení má jen 20 řádek, kde asi bude víc chyb? V těch 4k řádcích, které si nikdo ani pořádně nepřečte nebo v těch 20, které jsem si vypiloval za kratší dobu, než za jakou bych se naučil používat nějaký framework?

Tazatel zde v podstatě uveřejnil celý zdrojový kód svého odeslání mailu a následně i záplatu, která vyřešila jeho problém. Napadlo někoho z přítomných (kromě mne a TKL) vyhledat v tom kratičkém kódu chyby, kterých se tazatel dopustil, nebo všichni ve své zaslepenosti věří pouze nějakým externím knihovnám a frameworkům?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lol Phirae 13. 11. 2015, 15:10:18
Kde ta lůza bere jistotu, že jednotlivec nemá pravdu?

Aaaa, hle - další zneuznaný vynálezce hranatých kol...  ::) ;D
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 13. 11. 2015, 15:18:57
Kde ta lůza bere jistotu, že jednotlivec nemá pravdu?

Aaaa, hle - další zneuznaný vynálezce hranatých kol...  ::) ;D

Ale kdeže. Kolo je v tomto případě PHP funkce mail().
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Storm 13. 11. 2015, 15:41:35
Šijete si vlastní oblečení? Chováte vlastní prasata? Postavili jste si vlastní barák? Navrhli a zkonstruovali jste si vlastní auto? Děláte všechno třikrát tak dlouho, ale hlavně jinak? Ne? Tak to jste akorát posraný lepiči.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 16:00:28
Skutečně skvělá knihovna, když se musí používat takhle
Kód: [Vybrat]
$mail = new PHPMailer(true);
$mail->CharSet = 'utf-8';
abychom v odchozích e-mailech neměli defaultní ISO-8859-1. V dokumentaci o tom není ani "ň".
A to "true" určitě bude pro mnohé uživatele také hádankou.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: NooN 13. 11. 2015, 16:08:42
Šijete si vlastní oblečení? Chováte vlastní prasata? Postavili jste si vlastní barák? Navrhli a zkonstruovali jste si vlastní auto? Děláte všechno třikrát tak dlouho, ale hlavně jinak? Ne? Tak to jste akorát posraný lepiči.
Takze mi dalsi sa na vsetko kto robi niekto iny, vyserieme a budeme sa spoliehat len na nich. A ked pomru, pomrieme aj mi, lebo sme sa na to vsetko vy....
Programovanie stylom lepim z toho co uz niekto spravil a pritom tomu hovno rozumiem je $$#$%%#. Staci sa pozriet na par projektov a cloveku je hned zle.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lol Phirae 13. 11. 2015, 16:11:01
Ano, to je opravdu šokující odhalení, že jiné než defaultní kódování je potřeba na jednom řádku nastavit Daleko lepší to lemtat na 50 řádkách sám.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 16:32:36
Ano, to je opravdu šokující odhalení, že jiné než defaultní kódování je potřeba na jednom řádku nastavit Daleko lepší to lemtat na 50 řádkách sám.

Tak proč to není v dokumentaci?

Proč jsou všechny atributy "public" a ne "privat" jako ve slušných projektech? Proč má třída skoro 4000 řádek jako od prasat?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 13. 11. 2015, 16:32:54
Šijete si vlastní oblečení? Chováte vlastní prasata? Postavili jste si vlastní barák? Navrhli a zkonstruovali jste si vlastní auto? Děláte všechno třikrát tak dlouho, ale hlavně jinak? Ne? Tak to jste akorát posraný lepiči.

To je ale hodně divoké přirovnání.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 13. 11. 2015, 16:40:18
Ano, to je opravdu šokující odhalení, že jiné než defaultní kódování je potřeba na jednom řádku nastavit Daleko lepší to lemtat na 50 řádkách sám.

Aha, takže zatímco napsat si vlastní funkci na 50 řádků je nepřekonatelný problém, tak použít místo toho třídu o velikosti 4kB je v pořádku. To zní logicky.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Dzavy 13. 11. 2015, 16:44:16
Ta trida uz nemuze bejt jednodussi a zdrojak citelnejsi, s hromadou komentaru.

Dokumentace k API zde - http://phpmailer.github.io/PHPMailer/classes/PHPMailer.html

Predpokladam porad cely spatne...


By me zajimalo, co udelate, az PHP tuhle tridu jednou prepise do C a zakomponuje ji do standardni distribuce, stejne jako tam jsou funkce na zpracovani XML atd. Predpokladam ji budete okazale ignorovat.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 16:47:27
Aha, takže zatímco napsat si vlastní funkci na 50 řádků je nepřekonatelný problém, tak použít místo toho třídu o velikosti 4kB je v pořádku. To zní logicky.

Ta třída PHPMailer samotná má 136 KB. Má 3883 řádek.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lol Phirae 13. 11. 2015, 16:58:09
Predpokladam porad cely spatne...

Samozřejmě. Prostě jseš nechutnej lepič, všichni jsme lepiči a nechápeme tu ohromnou výhodu, když si to kolo můžeš znova objevit. Zvlášť výhodné to je, pokud tomu (jako tazatel) vůbec nerozumíš.  ;D ;D ;D
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 16:59:12
Ta trida uz nemuze bejt jednodussi a zdrojak citelnejsi, s hromadou komentaru.
Dokumentace k API zde - http://phpmailer.github.io/PHPMailer/classes/PHPMailer.html
Predpokladam porad cely spatne...

Ta dokumentace je k ničemu, o použití UTF-8 tam není ani zblo. To už je jednodušší si to najít v tom zdrojáku.

Citace
By me zajimalo, co udelate, az PHP tuhle tridu jednou prepise do C a zakomponuje ji do standardni distribuce, stejne jako tam jsou funkce na zpracovani XML atd. Predpokladam ji budete okazale ignorovat.

Počkám si na to, až budou odstraněny chyby, opraveno rozhraní a skutečně bude zabudována do standardní distribuce PHP. Pak ji možná budu používat. Do té doby k tomu nemám důvod.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: to_je_jedno 13. 11. 2015, 17:02:05
Az jednou vyjdes z mamahotelu tak zjistis, ze fakt neni duvod si neco takovyho matlat sam. Fakt si tak malo cenis vlastniho casu ze sis psal vlastni reseni? inu tvoje blbost, ja ten cas radsi venuju sobe nebo rodine.

4k radku kodu je nejak moc nebo v cem to vadi? time is money.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Dzavy 13. 11. 2015, 17:10:38
Ta dokumentace je k ničemu, o použití UTF-8 tam není ani zblo. To už je jednodušší si to najít v tom zdrojáku.
Citace

Tak pak je tam jeste par prikladu. Proc by tam melo byt zminovany UTF-8? Je tam jasne zdokumentovana vlastnost $CharSet.

Počkám si na to, až budou odstraněny chyby, opraveno rozhraní a skutečně bude zabudována do standardní distribuce PHP. Pak ji možná budu používat. Do té doby k tomu nemám důvod.

Takze jaky presne chyby tam jsou a co je spatne s rozhranim? Je to open source project na GitHubu, takze misto psani blabolu do diskuze je tam muzes jit opravit.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 17:20:37
Az jednou vyjdes z mamahotelu tak zjistis, ze fakt neni duvod si neco takovyho matlat sam. Fakt si tak malo cenis vlastniho casu ze sis psal vlastni reseni? inu tvoje blbost, ja ten cas radsi venuju sobe nebo rodine.

V mamahotelu už dávno nebydlím a netuším, proč to sem taháš, když to s tématem nesouvisí.

Proč bych měl preferovat cizí knihovnu před vlastní 50řádkovou knihovnou? To mi hlava nebere. Když už jsem si ji jednou napsal, tak ji budu používat, ne?

Citace
4k radku kodu je nejak moc nebo v cem to vadi? time is money.

Ano, je to moc - třída by neměla mít víc než cca 65 řádek. Navíc PHPMailer má chaotické rozhraní. Něco přes public atributy, něco přes settery. Porušuje všechna možná pravidla kulturního programování, o nějakém SOLID si můžeme nechat jen zdát. Je to prostě takový slepenec, který funguje jen silou vůle a je obtížně udržovatelný.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lol Phirae 13. 11. 2015, 17:26:47
Ano, je to moc - třída by neměla mít víc než cca 65 řádek.

Kristova noho, to je zas "poučka" jak vod Jirsáka.  ;D ::)
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 17:38:17
Je tam jasne zdokumentovana vlastnost $CharSet.

Jasně? Začátečník takovou vlastnost v tom kvantu snadno přehlédne. Skutečně si myslíš, že řádek
Citace
$CharSet :
The character set of the message.
je vyhovující dokumentací?

Počkám si na to, až budou odstraněny chyby, opraveno rozhraní a skutečně bude zabudována do standardní distribuce PHP. Pak ji možná budu používat. Do té doby k tomu nemám důvod.

Takze jaky presne chyby tam jsou a co je spatne s rozhranim? Je to open source project na GitHubu, takze misto psani blabolu do diskuze je tam muzes jit opravit.

Rozhraní je nejednotné, každá vlastnost se nastavuje jinak. To jsem ostatně už psal. První chybou je, že po zavolání konstruktoru vznikne nevalidní objekt. Ta chyba je tak hluboko zanesena v systému, že nemá smysl ji opravovat - je lepší ji napsat celou znovu. Nevidím důvod, proč bych měl opravovat nějakou cizí knihovnu, kterou k ničemu nepotřebuji. Když už bych ji potřeboval, tak bych udělal její fork a zcela ji překopal.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: WTF 13. 11. 2015, 17:51:53
Citace
Když už bych ji potřeboval, tak bych udělal její fork a zcela ji překopal.

Duhovou teorií a nefalšovaným nadšením nabitý mladík versus každodenní šedivá realita. Celý zbytek světa to dělá špatně a přitom to ti ubozí lidé ani neví! To je prostě kouzelné, jak se ten nedoceněný geniální hoch vzteká. Roztomilé.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Lol Phirae 13. 11. 2015, 18:28:38
Celý zbytek světa to dělá špatně a přitom to ti ubozí lidé ani neví!

Jsem také zdrcen. Po zjištění, že zavoláním konstruktoru vznikne nevalidní objekt už skoro hodinu přemýšlím o sebevraždě.

(https://suicidepreventioncu.files.wordpress.com/2014/10/727-computer-reaction-face-gun-shoot-head-suicide-an-hero.png)
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: to_je_jedno 13. 11. 2015, 18:55:24
Proč bych měl preferovat cizí knihovnu před vlastní 50řádkovou knihovnou?
Z meho pohledu: kolik promile funkcionality obslouzis?
Z pohledu mych zakazniku: co s tvoji onemanshow budu delat kdyz te sejme auto?

Ano, je to moc - třída by neměla mít víc než cca 65 řádek.
zadek vody. Lepsi joke tady dlouho nebyl. Jako kdo rekl tuhle "svatou" debilitu? Ty s Jirsakem? A ted tu o getterech a setterech!
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 13. 11. 2015, 22:25:06
Takze mi dalsi sa na vsetko kto robi niekto iny, vyserieme a budeme sa spoliehat len na nich. A ked pomru, pomrieme aj mi, lebo sme sa na to vsetko vy....
Programovanie stylom lepim z toho co uz niekto spravil a pritom tomu hovno rozumiem je $$#$%%#. Staci sa pozriet na par projektov a cloveku je hned zle.

Kargo kult mezi našimi programátory hluboce zakořenil. Podle názorů některých diskutujících je patrné, že mnozí ani netuší, že by se z tohoto područí měli vymanit a naučit se programovat.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: to_je_jedno 13. 11. 2015, 22:41:47
Kdo mi to "vymaneni" zaplati? Ty? Trh je neuprosny. Rychle a za slusnou cenu, aby to fungovalo. Jestli ma trida 60 radku nebo 4k to zakaznik VUBEC nezajima. Takze kdyz zakaznik chce neco co uz nekdo vymyslel tak proc bych to vymyslel znovu. Proc bych se mel branit pouzit na webu colorbox nebo owlcarousel? Mam si napsat vlastni klon jquery nebo phpka?
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Storm 14. 11. 2015, 01:17:25
Citace
Kargo kult mezi našimi programátory hluboce zakořenil. Podle názorů některých diskutujících je patrné, že mnozí ani netuší, že by se z tohoto područí měli vymanit a naučit se programovat.

Zatímco ty se permanentně "vymaňuješ" a vymýšlíš stopadesátý klon WordPressu s třídami o maximálně 65 řádcích, bez getterů a setterů a vůbec splňující další tisíce debilních pouček, tak oni už stihli dotáhnout do konce další tři projekty. A není to tak, že by pro ně byl problém napsat si vlastní klony všech zaběhaných knihoven, jen k tomu prostě nevidí žádný důvod. Mají totiž schopnost myslet i trochu pragmaticky, což tobě bolestně chybí. Je vtipné, že o cargo kultu mluvíš zrovna ty, který si myslíš, že aplikování těch nejúchylnějších teoretických mouder, odtržených od reality z tebe automaticky dělá nejlepšího programátora na světě.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Krysa1 14. 11. 2015, 16:26:26
hehe, dobře jste mu  naložili pindalovi. Viděl jsem pár takových matlalů, co se nic praktického nenaučili, protože většinou jde jen o to prohlédnout si tu dokumentaci, která bývá u relevantních knihoven kvalitní. Stejně tak je mnohem lepší věnovat čas do průzkumu opensource knihoven a zjistit, které jsou dobře udržované, než si všechno bastlit sám.

Kód: [Vybrat]
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);
už vídím jak na nějakou školu na maloměstě přijde za 5 let někdo jinej, kterej to PHP vlastně ani moc neumí (já taky ne, spíš vůbec) a uvidí tohle. Nic proti autorovi, odpověď na otázku to je a zdá se správná.

oproti tomu:
Kód: [Vybrat]
$mail = new PHPMailer(true);
$mail->CharSet = 'utf-8';
je pastva pro oči. To pochopí každej. Sice nevím, proč má nebo musí mít konstruktor s parametrem, ale když budu chtít, tak si to přečtu v doc.

Pak tu čteme, proč někde beží java 1.4 na centosu 4.2 a nejde to updatount protože tam nějaký Kit namatlat svoji samohonku, která mu přišla ve své době geniální, ale jaksi neobstála.

Takových historek jsou tisíce. Naposledy jsem viděl v jednom menším řetězci hospod, jak nějakej podobnej vtipálek tam pral přes síťovej disk do jednoho SQLlite souboru skoro z 10 klientů najednou, protože Postresql je složitý a zbytečný (on nerozumí tomu proč je potřeba), když to spadne, tak si klient vytváří nějakou lokální databázi taky sqlite a pak se to snaží narvat do centrálního souboru. a pak se to posere. Nějaké ORM knihovny? to je pro lepiče kódu. nazadekil si tam nějaké svoje pseudo-DAO v delphi - "páč pascal rulez pičo, učilismeseho na průmyslovce" a pral to tam hlava nehlava. Myslím, že modří už vědí, že se to neustále sralo a padalo a mizela data. Samohonič musel vracet skoro 450k za zpackanej projekt. Týpek s hospodama samozřejmě naprášky, protože už na to přeškolil personál - evidence skladu, tržeb, registrace směn pesonálu a docházka, rezervace a spousta dalších drobností. Když jsem mu řekl, že na tohle nikdo soudnej nesáhne třímetrovou chlorovanou tyčí na dráždění opic a že je to prostě mrtvý, ať si sežene někoho soudnýho, kterej si "slepí" hibernate  a spring a nějakej JS, nebo GUI framework a cena by se  měla pohybovat tak na polovině, ale já na to nemám čas, tak akorát objednal dvojitý vizoury a smutně koukal.

Asi si na tyhe příběhy založím blog. To jsou neuvěřitelný wtf momenty, co člověk na freelance vidí.

A nejhorší na tom je, že takovýhle lidi jdou vetšinou někam učit programování, kde tě zkoušejí z bublesortu, protože v normální společnosti nemají ekonomickou relevanci.

Rozdíl mezi cargo cultem a  vzorem je o tom, komu přiletí letadla s proviantem, ne o tom, kdo si o sobě co myslí, nebo co kecá.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: . 14. 11. 2015, 21:38:18
Když už tady řešíte takové hovadiny, jednu vám přihodím. Proč to autor nazval
Kód: [Vybrat]
mime_header_encode když je to z lingvistického hlediska naprostý nesmysl? Předpokládám, že taky nenazýváte funkce třeba
Kód: [Vybrat]
value_get nebo
Kód: [Vybrat]
valueGet ale logicky
Kód: [Vybrat]
get_value nebo
Kód: [Vybrat]
setValue
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 14. 11. 2015, 22:15:31
Když už tady řešíte takové hovadiny, jednu vám přihodím. Proč to autor nazval
Kód: [Vybrat]
mime_header_encode když je to z lingvistického hlediska naprostý nesmysl?

http://php.vrana.cz/kodovani-hlavicek-e-mailu.php (http://php.vrana.cz/kodovani-hlavicek-e-mailu.php)

Pokud by ses obtěžoval googlit, našel bys to i v Drupalu.

Osobně bych tu metodu nazval encode(), takže bych snad tvůj lingvistický cit nedráždil.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 14. 11. 2015, 22:43:46
To je přesně to co jsem potřeboval s ohledem na moje téměř nulové znalosti PHP.
DÍKY, DÍKY, DÍKY!!! Funguje to!
Roman
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);

Zkus ještě vylepšenou verzi:
Kód: [Vybrat]
mb_internal_encoding('UTF-8');
$is_sent = @mail($email, mb_encode_mimeheader($subject), "", $header);
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 15. 11. 2015, 08:03:01
Když už tady řešíte takové hovadiny, jednu vám přihodím. Proč to autor nazval
Kód: [Vybrat]
mime_header_encode když je to z lingvistického hlediska naprostý nesmysl? Předpokládám, že taky nenazýváte funkce třeba
Kód: [Vybrat]
value_get nebo
Kód: [Vybrat]
valueGet ale logicky
Kód: [Vybrat]
get_value nebo
Kód: [Vybrat]
setValue

Protože to je v podstatě opak PHP funkce imap_mime_header_decode(). Takže si svůj lingvistický kroužek s podtitulem "Jak správně pojmenovávat funkce tak, aby je pochopila i sekretářka z ČEZ" prosím otevřete přímo na fóru projektu PHP.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 15. 11. 2015, 08:07:25
už vídím jak na nějakou školu na maloměstě přijde za 5 let někdo jinej, kterej to PHP vlastně ani moc neumí (já taky ne, spíš vůbec) a uvidí tohle. Nic proti autorovi, odpověď na otázku to je a zdá se správná.

Aha, takže používat pro tvorbu PHP projektu výhradně cizí knihovny (protože dokumentace) je správné proto, aby se v tom mohl za 5 let vrtat někdo, kdo PHP skoro(nebo vůbec) neumí? Tak tomu říkám neprůstřelná logika.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 15. 11. 2015, 09:18:53
už vídím jak na nějakou školu na maloměstě přijde za 5 let někdo jinej, kterej to PHP vlastně ani moc neumí (já taky ne, spíš vůbec) a uvidí tohle. Nic proti autorovi, odpověď na otázku to je a zdá se správná.

Aha, takže používat pro tvorbu PHP projektu výhradně cizí knihovny (protože dokumentace) je správné proto, aby se v tom mohl za 5 let vrtat někdo, kdo PHP skoro(nebo vůbec) neumí? Tak tomu říkám neprůstřelná logika.

To je neprůstřelná logika programátorské dělnické třídy. S tím nic moc nenaděláš.

Zkusil sis tu funkci mb_encode_mimeheader()? Mně se zdá lepší, než se to snažit slepovat. Na rozdíl od funkce imap_8bit() mi funguje všude.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: TKL 15. 11. 2015, 10:03:41
Zkusil sis tu funkci mb_encode_mimeheader()? Mně se zdá lepší, než se to snažit slepovat. Na rozdíl od funkce imap_8bit() mi funguje všude.

Mrknu, dík za tip.
Název: Re:Odeslání mailu v PHP - špatná diakritika v předmětu zprávy
Přispěvatel: Kit 15. 11. 2015, 10:14:47
Zkusil sis tu funkci mb_encode_mimeheader()? Mně se zdá lepší, než se to snažit slepovat. Na rozdíl od funkce imap_8bit() mi funguje všude.

Mrknu, dík za tip.

Nezapomeň předtím zavolat funkci mb_internal_encoding('UTF-8'); Bez toho to nefunguje správně.