2009-03-04 7 views
0

私は登録手続きの一環として確認メールを送信しています。メールヘッダー

以前は、ヘッダー(PHPメール機能)を使用していないので、送信したメールにいくつかの問題がありました。

ヘッダーを追加すると、ユーザーからの返信が増えましたが、すべてのメッセージがその宛先に届くとは限りません。

メッセージが送信先に届くことを確認するにはどうすればよいですか?

「必須」と見なすことができるヘッダーはありますか?

これは私のSendMail関数のコードである

mail($to, 
    $subject, 
     $message, 
      "MIME-Version: 1.0\n". 
      "Content-type: text/plain; charset=ISO-8859-1; format=flowder\n". 
      "Content-Transfer-Encoding: 8bit\n". 
      "Message-Id: <" . md5(uniqid(microtime())) . "@mysite.com>\n". 
      "Return-Path: <[email protected]>\n". 
      "X-Mailer: PHP v".phpversion()."\n". 
      "From: [email protected] mysite.com"); 

おかげ

答えて

3

ヘッダは本体からヘッダーを分離するために下にあるホワイトスペースを必要としています。 スパムアサシンのようなツールは、あなたに大きな印象を与えます。

また、あなたは行終端として\r\nを使用する必要がありますだけではなく、\n

From PHP.net

複数の余分なヘッダのCRLF(\ r \ n)で区切る必要があります。

1

ヘッダは、私にはかなり良いようです。私が見る唯一の不具合はFromヘッダの余分な空白です。

私はあなたがすでにそれをチェックすると確信しているが、念のために...

"From: [email protected] mysite.com"); 
    should be (?) 
"From: [email protected]"); 
0

@Einekiによって指摘された詳細を除いて、ヘッダーは正常に見えます。また、Windowsを使用している場合、mail()関数がWindowsプラットフォーム上で実装されているために、問題を引き起こす可能性があるため、 "[email protected]"の形式で$ to paramを送信する必要があります。 "to"アドレスが正しく解析されないことがあります。

0

あなたは(RFC5322によってその必須)Date:ヘッダを追加する必要がありますし、何も指定されていない(そしてそれは他のすべての古いメッセージの間で失われる)場合、一部のメールクライアントは、電子メールの日付として1970年1月1日をとることができます。

4

PhpMailerSwiftMailer、またはZend_Mailのような電子メールの処理には、外部ライブラリを使用する必要があります。あなたの問題はすべて消えてしまいます。

1

これは私がhtmlメール用に使用しているワーキングメール機能で、変数$ returnはメールサーバからエラーレポートを受け取るために定義されています。あなたがここにsugunan.com

で詳細を見ることができる

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
$headers .= 'From: <'.$from.'>' . "\r\n"; 
$return = '-f'.$from; 

@mail($to, $subject, $msg, $headers, $return); 

関連する問題