Документы PHP mail () говорят, что я должен использовать только LF в теле, но RFC 5322 говорит иначе. - PullRequest
4 голосов
/ 26 июля 2011

PHP инструкция (http://php.net/manual/en/function.mail.php) говорит:

Каждая строка должна быть разделена LF (\ n). Линии не должны быть более 70 символов.

Но фактический RFC 5322 дает совершенно другую информацию:

2.3. Тело Тело сообщения - это просто строки US-ASCII. персонажи. Есть только два ограничения на тело:
o CR и LF ДОЛЖНЫ появляться только вместе как CRLF; они НЕ ДОЛЖНЫ появляться самостоятельно в организме. o Линии персонажей в теле ДОЛЖЕН быть ограничен 998 символами, и ДОЛЖЕН быть ограничен 78 символами, исключая CRLF.

Итак, RFC говорит, что следует использовать только \ r \ n. Я не понимаю, как php mail () работает в фоновом режиме?

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Очевидно, что PHP mail() должен преобразовывать \n в \r\n в фоновом режиме.

Это похоже на практику Perl по использованию \n для представления «логического» перехода на новую строку и последующего их внутреннего перевода в зависимости от ОС. Поскольку PHP был частично вдохновлен Perl, не удивительно, что подобный механизм существует в PHP.

1 голос
/ 26 июля 2011

как php mail () работает в фоновом режиме?

Точно так, как вы можете ожидать от конфигурации cionfiguration.По умолчанию это просто оболочка для двоичного файла sendmail на большинстве систем и очень простой MUA, в котором указан SMTP-хост.В то время как первый использует LF в качестве строки, заканчивающейся на своем входе, последний требует CRLF для своего вывода - поскольку окончания строк различаются в зависимости от ОС, PHP предоставляет унифицированное окончание строки для почты (LF)

...