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