Электронное письмо с кавычками для печати, отображающее знаки равенства в определенных почтовых клиентах

#email

#Адрес электронной почты

Вопрос:

Я генерирую электронные письма. Они отлично отображаются для меня в 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 действительно устранила проблему.