0

サーバーにphp 4.xがインストールされています。メールを送信するスクリプトがあります。通常、受信する10通のメールのうち1通には本文がありませんが、件名はそこにあります。メール送信コードは以下です。

 $headers  = "MIME-Version: 1.0 \n";
 $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
 $headers .= "From: Contact Form <contact_form@mycompany.com> \r\n";
 $headers .= "Request Form: $name ($contactid)";

 $subject = "Request: $name";

 $body = "Name:&nbsp;$name<br />Email:&nbsp;$email<br />Phone:&nbsp;$phone<br/>";

 mail("myname@gmail.com",$subject,$body,$headers);

その背後にある理由は何ですか。これは、私が書いたスクリプトの問題ですか、それとも SMTP サーバーの問題ですか。

4

1 に答える 1

2

RFC 2822によると、
ヘッダー フィールドは、フィールド名、コロン (":")、フィールド本体で構成され、CRLF で終了する行です。フィールド名は、コロンを除いて、印刷可能な US-ASCII 文字 (つまり、33 から 126 までの値を持つ文字) で構成する必要があります。

ヘッダーがこの形式に従っていません。一部の受信メール サーバーはより厳格であり、そのためにメールを拒否する場合があります。次のように変更します。

$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Contact Form <contact_form@mycompany.com>\r\n";
$headers .= "Request-Form: $name ($contactid)\r\n";

\r : キャリッジ リターン
\n : 改行

それはあなたの問題を解決しますか?

于 2012-08-09T13:46:13.187 に答える