Mailer a Exchange ⇒ rozbitý email

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ATom
Člen | 16
+
0
-

Na jednom webu jsem použil Nette Mailer. Vše funguje v pořádku, ale zákazník, který používá MS Exchange si stěžuje že mu úplně všechny zprávy chodí rozbité. V těle zprávy se zobrazuje i kus hlavičky. Tvrdí, že mu všechny emaily chodí v pořádku, jen z mého webu poškozené.

Nesetkal se s tím někdo?

Kolega mi poradil, že mám použít tohle, že tohle kdysi zkoušeli a že to funguje dobře i na Exchange

<?php

                        if ( @mail($emailTo, 'Prodejny - dotaz',
                                    $body,
                                    'From: ' . $contactArr['email']
                                     . "\n" . 'Return-Path: ' . $contactArr['email']
                                     . "\n" . 'MIME-Version: 1.0'
                                     . "\n" . 'Content-Transfer-Encoding: 8bit'
                                     . "\n" . 'Content-Type: text/plain; charset="utf-8"' ) ) {

?>

Nette ale také používá mail, takže musí být špatně něco v té hlavičce, co Nette vytváří, respektive asi ne špatně, ale něco co Exchange nezvládne.

Honza Kuchař
Člen | 1662
+
0
-

Ideální by bylo, kdyby se ti podařilo získat zdrojáky těch dvou e-mailů co prošly Exchangem. (rozbitý a ten co byl ok) Pošli mu ty 2 e-maily a potom mu řekni, ať ti je OBA naráz pošle. (připojí se jako příloha v originální podobě – alespoň doufám)

Ondřej Mirtes
Člen | 1536
+
0
-

Zkus zkrátit předmět e-mailu :)

ATom
Člen | 16
+
0
-

No, je to opravdu tím dlouhým předmětem, on ani není tak dlouhý, ale po zakódování to vypadá takto:

Subject: =?UTF-8?Q?=C5=BD=C3=A1dost=20o=20informace=20o=20Fleet?=
 =?UTF-8?Q?=20programu?=

Nette nad určitou délku řádku provede rozdělení na více řádků, a ještě na začátku toho druhého řádku udělá mezeru, což Exchange bere jako konec hlavičky a zbytek zobrazí už jako součást body.

A teď pozor. Gmail delá totéž, nicméně to přes Exchange projde!!! Z gmail to tedy vypadá nějak takto:

Subject: =?UTF-8?B?VGVzdG92YWPDrSBlbWFpbCAtIHBva3VzbsOhIHpwcsOhdmEgLSDFoWtvZGxpdsO9IG9kaw==?=
        =?UTF-8?B?YXogLSDEm8WhxI3FmcW+w73DocOtw6k=?=

V tom, že používá base65 místo Quoted-Printable snad rozdíl nebude.
Ale na tom druhém řádku udělá větší mezeru, že by to bylo tím?

Editoval ATom (18. 11. 2009 16:06)

Patrik Votoček
Člen | 2221
+
0
-

naposledy když jsem to zkoumal myslím že jsem došel ke stejnému závěru… ale kravčo asi bude vědět víc…

kravčo
Člen | 721
+
0
-

Pozriem sa na to, aktuálne už mám konto na Exchange serveri, takže sa s tým trochu pohrám a budem mať výstupy z prvej ruky… Stay tuned…

ATom
Člen | 16
+
0
-

Ono může jít klidně jen o problém na nějaké starší verzi Exchange.
Plánuji zkusit v Nette zvětšit počet těch mezer, až budu mít čas to najít a vyzkoušet.

arron
Člen | 464
+
0
-

Mam podobný problem…hlavne by me zajimalo jestli je to bug primo v nette nebo je to problem v Exchange serveru. Uz jste se tim nekdo zabyval prosim?

piler
Člen | 111
+
0
-

Zdravim,

mam podobny problem

Subject: Internal Order Confirmation - Service

	=?UTF-8?Q?=20Address=20-=20Special=20Offer=20-=20=C2=A325!=20(Normal?=

	=?UTF-8?Q?=20Price=20=C2=A340)=20for=20company=20"IXG=20LIMITED"?=

Vie niekto poradit, v com je problem? Da sa tomu nejak predist? dik

Patrik Votoček
Člen | 2221
+
0
-

Kratší Subject (Předmět e-mailu)

piler
Člen | 111
+
0
-

vrtak-cz napsal(a):

Kratší Subject (Předmět e-mailu)

Chcem to teda osetrit na pocet znakov. Vies mi poradit maximalny pocet znakov? Je to teda problem Exchange servera? Dik ;-)

Ondřej Mirtes
Člen | 1536
+
0
-

Je to problém třídy Nette\Mail a maximální počet znaků závisí na tom, jestli je použita diakritika atd.

ATom
Člen | 16
+
0
-

Není to problém moc dlouhého emailu, i když je to částečné řešení, nebo spíše jen berlička. Když si z gmailu pošlete email s libovolně dlouhým předmětem plný diakritiky bude vše OK. Už jsem s tím laboroval.

Zkoušel jsem místo mezery použít tabelátor pro odsazení, jako dělá gmail a stejně je to pořád rozbité. Jediné, čím se ještě gmail liší, že místo quoted-printable používá base64.

Chtělo by to vyřešit přímo na úrovni Nette, protože Exchange je v podnikové sféře bohužel hodně rozšířený.

piler
Člen | 111
+
0
-

Ondřej Mirtes napsal(a):

Je to problém třídy Nette\Mail a maximální počet znaků závisí na tom, jestli je použita diakritika atd.

Diakritika tam nebude. Na kolko ho mam teda skratit? 80 znakov?

David Grudl
Nette Core | 8228
+
0
-

Otázka je, jestli je to skutečně v tom použití base65 místo Quoted-Printable (což se mi nezdá), nebo v délce řádku (ta by taky měla být v limitu).

piler
Člen | 111
+
0
-

David Grudl napsal(a):

Otázka je, jestli je to skutečně v tom použití base65 místo Quoted-Printable (což se mi nezdá), nebo v délce řádku (ta by taky měla být v limitu).

Aky limit mas na mysli?

Patrik Votoček
Člen | 2221
+
0
-

Problém bych řekl je úplně někde jinde.
\Nette\Mail\Mail

Subject: =?UTF-8?Q?Ahoj=20jak=20se=20m=C3=A1=C5=A1=20j=C3=A1=20se?=
	=?UTF-8?Q?=20m=C3=A1m=20dob=C5=99e=20a=20co=20ty=20je=20to=20prost?=
	=?UTF-8?Q?=C4=9B=20vool=20=C4=9B=C5=A1=C4=8D=20=C5=99=C4=8D=20?=
	=?UTF-8?Q?=C3=AD=C4=8D=C5=99=C5=A1=C4=8D=20=C4=9B=C5=A1=C4=8D=20?=
	=?UTF-8?Q?=C5=A1=C4=8D=20=C4=9B=C5=A1=C4=8D=20=C4=9B=C5=A1=C4=8D?=
	=?UTF-8?Q?=C4=9B=C5=A1=C4=8D+=C5=A1=20+=C4=9B=C5=A1=C4=8D=20?=

Microsoft Exchange 2010 (Outlook 2010) – edit

Subject: =?utf-8?B?QWhvaiBqYWsgc2UgbcOhxaEgasOhIHNlIG3DoW0gZG9ixZllIGEgY28gdHkg?=
 =?utf-8?B?amUgdG8gcHJvc3TEmyB2b29sIMSbxaHEjSDFmcSNIMOtxI3FmcWhxI0gxJs=?=
 =?utf-8?B?xaHEjSDFocSNIMSbxaHEjSDEm8WhxI3Em8WhxI0rxaEgK8SbxaHEjSA=?=

problém bych viděl v tom že u \Nette\Mail\Mail začíná nový řádek tabulátorem kdežto u Outlooku je to mezera.

Edit: UTF-8 hlavička z Outlooku místo staré ISO

Editoval vrtak-cz (4. 12. 2009 21:43)

ATom
Člen | 16
+
0
-

Ne, tím to podle mě není, gmail taky používá tabelátor a na exchange to chodí v pořádku.

Nicméně Outlook, stejně jako jako gmail, evidentně používá base64!

Můj největší problém je, že exchange má pouze náš zákazník, ve firmě ho nemáme a tak to nemůžu moc testovat, protože to vypadá blbě, když zákazníkovy posíláme testovací emaily.

Honza Kuchař
Člen | 1662
+
0
-

A do Outlooku to chodí dobře? Nedal by se použít na testování místo Exchange? Popřípadě stáhnout a nainstalovat trial na nějaký virtuál…

ATom
Člen | 16
+
0
-

Kamkoliv jinam než na exchange to chodí dobře, tedy pokud je Outlook za exchangem, chodí to do něj blbě.

piler
Člen | 111
+
0
-

ATom napsal(a):

Kamkoliv jinam než na exchange to chodí dobře, tedy pokud je Outlook za exchangem, chodí to do něj blbě.

JJ, presne tak…neviem co mam urobit. Ci mam orezat subject a na kolko znakov…

ATom
Člen | 16
+
0
-

Zatím takový nevím, nemám to jak testovat, doufal jsem, že někdo tady bude mít exchange. Zatím jsem to vyřešil tak, že jsem přenastavil délku zalomení na 500 znaků, takže se předmět nezalamuje a funguje to. Ale je to jen dočasné řešení.

piler
Člen | 111
+
0
-

ATom napsal(a):

Zatím takový nevím, nemám to jak testovat, doufal jsem, že někdo tady bude mít exchange. Zatím jsem to vyřešil tak, že jsem přenastavil délku zalomení na 500 znaků, takže se předmět nezalamuje a funguje to. Ale je to jen dočasné řešení.

Ako si to nastavil?

Panda
Člen | 569
+
0
-

Neví někdo, u jaké verze Exchange se to projevuje? Dneska jsem se celé odpoledne mořil instalací virtuálního Exchange 2007 a zdá se, že ten je v pohodě (jako klient Outlook 2007). Když by mi zítra vyšel čas, tak bych zkusil ještě Exchange 2003.

Doufám, že jsem problémové chování správně pochopil a že předmět byl dost dlouhý.

ATom
Člen | 16
+
0
-

To bohužel nevím, zákazník to samozřejmě neví :-( A zjistit to je skoro nemožné. Vzhledem k tomu, že jde o velkou firmu bych ale typoval na starší verzi.

Předmět musí být tak dlouhý, aby se ve zdroji zprávy zalomil na druhý řádek.

Každopádně s gmailu to funguje a liší se to jen v tom, že používá base 64 místo Quoted Printable

piler
Člen | 111
+
0
-

Je to uz nejak vyriesene s tym problemom, ktory vznika v kombinacii dlheho subjectu a exchange?

shew
Člen | 7
+
0
-

Pravdepodobne mam stejny problem. Je zname uz nejake reseni??

Panda
Člen | 569
+
0
-

Zkuste se, prosím, někdo připojit k zákazníkovi, kterému to zlobí, na SMTP server (port 25) přes telnet. Hned první, co by Vám ten SMTP server měl poslat, je uvítání s názvem softwaru a v něm by se některé exchange servery měly přiznat ke své verzi. Když budeme vědět verzi, u které to blbne, bude se to lépe řešit.

shew
Člen | 7
+
0
-

Tak od zakaznika jsem dostal pouze informaci o tom ze pouzivaji Microsoft Exchange Server 2003. A protoze se jedna o velkou firmu nedokazal lokalni it pracovnik zjistit dalsi podrobnosti. Kazdopadne tez mohu potvrdit, ze zkraceni predmetu vyresilo problem.

Panda
Člen | 569
+
0
-

Tak se mi po několika pokusech podařilo nainstalovat Exchange 2003. Připojil jsem k němu Outlook 2003 a zkusil poslat e-mail s diakritikou a dlouhým předmětem – dorazil v pořádku.

Máte někdo, prosím, nějakou šablonu e-mailu, který dělá problémy?

ATom
Člen | 16
+
0
-

Subject musí být tak dlouhý, aby když se podíváš do zdrojáku vygenerované zprávy, byl zalomený přes více jak jeden řádek. Když se používá UTF-8, jde to docela rychle.

Zkoušel jsem se taky připojit telnetem na port 25 na mail.hyundai.cz a verzi mi to neprozradilo.

vvondra
Člen | 2
+
0
-

Zkuste tohle:

otevřte MailMimePart.php a přepište:
const EOL = "\r\n";
na
const EOL = "\n";

Editoval vvondra (11. 5. 2010 12:07)

Honza Kuchař
Člen | 1662
+
0
-

vvondra napsal(a):

Zkuste tohle:

otevřte MailMimePart.php a přepište:
const EOL = "\r\n";
na
const EOL = "\n";

To je dobrý nápad. :-)

piler
Člen | 111
+
0
-

Honza Kuchař napsal(a):

vvondra napsal(a):

Zkuste tohle:

otevřte MailMimePart.php a přepište:
const EOL = "\r\n";
na
const EOL = "\n";

To je dobrý nápad. :-)

A funguje to?

Honza Kuchař
Člen | 1662
+
0
-

Nemám možnost to vyzkoušet na Exchange. Ale mě to funguje na všechny klienty co používám jak má.

piler
Člen | 111
+
0
-

Honza Kuchař napsal(a):

Nemám možnost to vyzkoušet na Exchange. Ale mě to funguje na všechny klienty co používám jak má.

Odkusam to a dam vediet.

OndrejSlamecka
Člen | 41
+
0
-

Potvrzeno – řešení se změnou konstanty EOL – uvedené výše – je funkční.
Teď bohužel nemám bližší info o prostředí, kde to běží, ale tam to problém s kódováním vyřešilo, jinde to nic nezměnilo.

Honza Kuchař
Člen | 1662
+
0
-

tam to problém s kódováním vyřešilo, jinde to nic nezměnilo.

To jsem nepochopil. Funguje to nebo ne? :-)

tester
Člen | 1
+
0
-

To je poměrně stará a známá věc, že „\r\n“ dělá v Outlooku problém a je potřeba používat „\n“. Bylo by dobré to fixnout oficiálně, přinejmenším, aby se to dalo nastavovat při sestavování mailu.

David Grudl
Nette Core | 8228
+
0
-

Pokusil jsem se to opravit v poslední revizi 1.0, můžete to vyzkoušet?