#Адрес электронной почты
Вопрос:
Я генерирую электронные письма. Они отлично отображаются для меня в Gmail и Outlook 2010. Однако мой клиент видит знак =, который добавляется в конец строк при форматировании для печати в кавычках. Он также поглощает символ в следующей строке, но затем отображает знак равенства.
Пример:
line that en=
ds like this
отображается как
line that en=s like this
(Примечание: символ EOL в моих электронных письмах — это просто LF. Нет CR.)
Я подтверждаю, какую версию Outlook использует мой клиент, но я думаю, что это 2007. Заголовки писем от нее, похоже, поступают через Exchange 6.5.
Мои электронные письма создаются на php с использованием библиотеки HtmlMimeMail5. Это электронные письма, состоящие из нескольких частей, с соответствующим разделом, отправленным с:
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Похоже, я мог просто убедиться, что ничто в моем электронном письме не достигает переноса строки в 76 символов, но это кажется неправильным способом решения проблемы. Должен ли символ EOL отличаться? (В электронных письмах от клиента символ EOL — это просто LF) Есть другие идеи?
Ответ №1:
Я не знаю, что делает библиотека PHP, но в конечном итоге MIME-почта должна содержать CR LF окончания строк. Очевидно, клиент замечает, что за = не следует правильная последовательность CR LF , поэтому предполагается, что это не мягкий разрыв строки, а символ, закодированный в двух шестнадцатеричных цифрах, поэтому он считывает следующие два байта. Следует заметить, что следующие два байта не являются допустимыми шестнадцатеричными цифрами, поэтому его поведение тоже неверно, но мы должны признать, что в этот момент у него нет возможности отобразить что-то полезное. Они выбрали подход «мусор, мусор».
Комментарии:
1. Действительно, оказалось, что моя почтовая библиотека по умолчанию отправляла только LF. Настройка этого параметра на CRLF действительно устранила проблему.