Spatné znaky v mailu – rozdělení HTML entit novým řádkem
- Rypi
- Člen | 38
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
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
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
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)