У меня проблемы с отправкой электронных писем в формате HTML с длинными строками текста. Редактор WYSIWYG (FCKEditor 2.5), используемый на сайте, продолжает удалять все символы \n
в определенных браузерах, включая IE и Chrome. Результатом является электронное письмо с одной огромной строкой текста. Это не было бы проблемой, если бы почтовые клиенты не переносили строки длиной более 998 символов, вставляя в них ! \n
. Конечно, они почти всегда оказываются в самых неудачных местах, ломая HTML-теги и выглядя неприятно в самом контенте.
Моим первоначальным решением было добавить перевод строки после каждого тега HTML или через каждые от 900 до 990 символов. Это регулярное выражение, с которым я закончил:
return preg_replace("/(<\/[^\>]+>|<[^\>]+\/>|>[^<]{900,990}\s)(\n)*/","$1\n",$str);
Однако, когда есть строки, которые вообще не содержат никаких тегов, часть, соответствующая пробелу, никогда не запускается. Но если я уберу >
с его начала, он начнет ломать теги.
Есть ли лучший способ сделать это, чем регулярное выражение, или это исцеление можно вылечить?
РЕДАКТИРОВАНИЕ: Предел длины строки в 1000 символов определен в RFC 821 .