Spatné znaky v mailu – rozdělení HTML entit novým řádkem

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

Ahoj,

mám problém s emaily odeslanými přes Nette.
Je možné, že nette rozdělí dlouhý řádek (1000 znaků) zrovna v místě, kde je zakódovaný znak s čárkou (í) a tím se pak v emailu zobrazí špatně? Máte nějaký návrh na vyřešení? Díky
Seznam, Gmail i Thunderbird jsou na tom stejně.

Originál (co se snažím poslat)
…slouží ženám

Originál těla zprávy (z Thunderbirdu)
…964 znaků…slouž&iacu
te; ženám

s4muel
Člen | 92
+
+1
-

pozri: http://stackoverflow.com/…ngth-in-mail
akceptovana odpoved na SO cituje z odseku 2.1.1 http://www.rfc-editor.org/rfc/rfc5322.txt

David Grudl
Nette Core | 8282
+
0
-

Chtělo by to zjistit, co to rozděluje, tj. někam dumpnout, co jde do funkce mail().

V Nette řádky rozděluje funkce quoted_printable_encode, ta rozdělí i entity, ale použije se jen tehdy, pokud je nějaký řádek delší než 990 znaků (btw, koukám, že je tam bug, místo délky řádku to testuje souvislý počet znaků bez whitespace). Rozdělení entit by nemělo vadit, Gmail i Thunderbird mi takový email ukážou v pořádku.

Pokud se quoted_printable_encode nepoužije, je možné, že to natvrdo rozdělí něco cestou. Pak by mohla pomoci oprava: ve třídě Message nahradit oba reguláry '#\S{990}#' za '#[^\n]{990}#'. Vyzkoušíš to?

Rypi
Člen | 38
+
0
-

Ano, řádky byly dlouhé i téměř těch 1000 znaků.
Nahradil jsem oba reguláry a najednou všechny řádky krátké a žádné špatné znaky.

Problém jsem také mohl vyřešit konfigurací tinymce, což by ale nevyřešilo problém v Nette.
entity_encoding : "raw",

Ještě mě tak napadá, že entity byly rozdělené a možná že na novém řádku byla i mezera, proto pak email viděl: slouž&iacu te; ženám

EDIT: Našel jsem hodně podobnou chybu zde: https://forum.nette.org/…ozbity-email

Editoval Rypi (2. 9. 2014 14:38)

David Grudl
Nette Core | 8282
+
0
-

Takže to zřejmě rozsekávalo něco na cestě.

fixed https://github.com/…bbe33ae4b0ae