Почему так важно, чтобы CR и LF отображались вместе в электронной почте?

StackOverflow https://stackoverflow.com/questions/497064

  •  20-08-2019
  •  | 
  •  

Вопрос

От http://www.faqs.org/rfcs/rfc2822.html:

CR и LF ДОЛЖНЫ встречаться только вместе как CRLF;они НЕ ДОЛЖНЫ появляться независимо в организме.

У нас есть веб-сервис, который рассылает электронные письма с подтверждением, но один из наших пользователей указал, что это не соответствует стандарту rfc2822.Итак, мой вопрос в том, почему важно, чтобы CR и LF отображались вместе в сообщениях электронной почты?

Это было полезно?

Решение

Потому что в электронной почте CRLF является разделителем строк.Если вы используете только CR или только LF, у вас возникнут всевозможные неожиданные проблемы с различными клиентами, комбинацией SMTP-серверов.Некоторые серверы будут отклонять ваши электронные письма, некоторые будут "исправлять" ваши электронные письма.Исправленные электронные письма - одни из самых забавных в работе.

Другие советы

Потому что это есть в принятом RFC?

Реализации являются производными от RFC.Если бы это было не так, то не было бы никакой гарантии совместимости между различными реализациями.Могут существовать или не существовать материальные, технические причины, требующие, чтобы они появлялись вместе, но в данном случае эти причины не имеют значения.Это простой вопрос: "потому что они так сказали".

Подумайте в терминах старого телетайпа.CR возвращает пишущую головку в начало строки, LF прокатывает бумагу на одну строку вперед.Вам нужны оба шага, чтобы начать новую строку.Если вы используете CR без LF, вы перезапишете тот же текст, что, конечно, незаконно.

В любом случае, это историческая причина определить CR + LF как ASCII-код для новой строки.Конечно, в конце концов, это просто произвольные коды.Некоторые системы используют только CR для обозначения новой строки, некоторые системы используют только LF, некоторые используют совершенно другой символ.RFC2822 должен был выбрать один и решил разрешить только последовательность CRLF.

Поскольку RFC решил использовать CRLF, имеет смысл запретить CR или LF отдельно, поскольку в любом случае это было бы довольно бесполезно и проблематично обрабатывать.

Если нет, то в итоге вы получите CR, который поместит вас в ту же строку, тогда все, что вы напишете, будет поверх символов слева в той же строке, затем идет LF, и вы оказываетесь в каком-нибудь столбце ближе к середине и начинаете писать снова.Грязный.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top