1

これはこの質問に似ていると思いますが、自分宛てに送信すると2通のメールしか届きません。同じスクリプトで他の人にメールを送信しましたが、1通のメールが届きます。これは電子メールスクリプトです:

<?php
  function sendEmail( $recipient, $sub, $msg )
  {
    $to      = $recipient;
    $subject = $sub;
    $message = $msg;

    mail( $to, $subject, $message );
  }
?>

これを呼び出すコードは次のとおりです。

if( $retVal != FALSE ) // No errors in execution of report generation
{
  $subject = "Successful Report";
  $message = "The report was successfully generated.";
  // Notify people about success
  sendEmail( $mailto, $subject, $message );

  echo "Successful report generation\n";
}
else // Error in report generation
{
  $subject = "Unsuccessful Report";
  $message = "The report failed to generate.";
  // Notify people about failure
  sendEmail( $mailto, $subject, $message );

  echo "Report generation was unsuccessful\n";
}

ここで、$ retvalはsystem()の戻り値です。誰かがこの問題に光を当てることができますか?それとも、これは見落とされがちなことですか?

どうもありがとう

-さびた

4

3 に答える 3

3

会話に基づいて: あなたは二重の電子メールを受信して​​いる唯一の受信者であり、「成功したレポートの生成」という文字列は 1 回だけ出力されます。ここでの原因は PHP ではなく、MTA などの PHP 以外の何かにあるようです。

受信した 2 つのメールのヘッダー、特に MessageID ヘッダーを見てください。それらが同一である場合、PHP から 1 通のメールが送信され (正常です!)、途中で 2 回配信されたことになります。

それらが同一でない場合 (乱雑)、PHP が実際に 2 つの電子メールを送信したか (可能性は低い)、または PHP とメール クライアントの間に再送信者が存在します。

後者の場合、メールのヘッダーを詳しく調べて、各メールのソースとルートを特定し、エンベロープを調べて、MTA がメールの送信先を特定します。

于 2012-07-19T18:00:02.043 に答える
0
$message = "";
$header = "Content-Type: text/html; charset=UTF-8;\r\n";
mail($mailto, $subject, $message, $header);
于 2012-07-19T17:58:59.617 に答える
0

debug_backtrace()からの出力をメールの本文に追加します。これにより、sendEmail関数がいつ呼び出され、誰が呼び出したかを判断できます。

于 2012-07-19T17:55:45.493 に答える