4

PHP マニュアル (http://php.net/manual/en/function.mail.php) は次のように述べています。

各行は LF (\n) で区切る必要があります。行は 70 文字を超えてはなりません。

しかし、実際の RFC 5322 では、まったく異なる情報が提供されます。

2.3. 本文 メッセージの本文は、単なる US-ASCII 文字の行です。本体の制限は次の 2 つだけです。
o CR と LF は、CRLF として一緒にのみ発生する必要があります。それらは体内で独立して出現してはなりません。o 本文の文字行は 998 文字に制限する必要があり、CRLF を除いて 78 文字に制限する必要があります。

そのため、RFC では、\r\n のみを使用する必要があると述べています。わかりません - php mail() はバックグラウンドでどのように動作しますか?

4

2 に答える 2

2

明らかに、PHPはバックグラウンドmail()で変換\nしている必要があり\r\nます。

これは、「論理的な」改行を表すために使用し、OS に応じて内部的に変換するというPerl の慣例に似ています。\nPHP は部分的に Perl の影響を受けているため、同様のメカニズムが PHP に存在することは驚くことではありません。

于 2011-07-25T21:58:46.863 に答える
1

php mail() はバックグラウンドでどのように機能しますか?

構成から予想されるとおりです。デフォルトでは、ほとんどのシステムで sendmail バイナリの単なるラッパーであり、SMTP ホストが指定されている非常に単純な MUA です。前者は入力の行末として LF を使用しますが、後者は出力に CRLF を必要とします。行末は OS によって異なるため、PHP はメール (LF) に統一された行末を提供します。

于 2011-07-25T22:38:03.903 に答える