Недавно некоторые клиенты жаловались, что они получают искаженные электронные письма. Отображались заголовки MIME, данные в кодировке base64 и т. Д. Материал, который должен был быть декодирован их почтовыми клиентами.
После расследования я обнаружил, что некоторые почтовые клиенты (например, gmx.de webmail вставляют одну пустую строку после каждой другой строки), таким образом, действительно все портят.
Следуя догадке, я изменил свой код отправки почты, чтобы заменить все CRLF просто LF. И о чудо - почта пришла целой.
Это странно, потому что RFC 5322 прямо заявляет, что
2,3. Тело
Тело сообщения - это просто строки символов US-ASCII.
только два ограничения для тела следующие:
o CR и LF ДОЛЖНЫ появляться только вместе как CRLF; они НЕ ДОЛЖНЫ появляться
самостоятельно в теле.
А? Плохая почта? Или я где-то ошибся? Другие почтовые сообщения (такие как gmail) не имеют проблем с этим, и действительно, кажется, что у большинства людей нет проблем (так как жалоб мало).
Просто заметьте - я отправляю электронную почту через функцию PHP mail()
на Linux-боксе. Основным почтовым программным обеспечением является qmail, но я не уверен.
Похоже, qmail не любит CRLF при похожих условиях . Может ли это быть проблемой? Разве это не исправлено (эта страница не обновлялась в течение 4 лет)?