私は 2 か月前からこの問題を抱えており、まだ苦労しています。メーリングリスト プログラムに PHPMailer を使用しています。そして、特定の時間に実行されるcronジョブがあります。ただし、メールには問題があります。
メーリングリストのメンバー全員に送信するループで PHPMailer を使用しています。コードは次のようになります。
<?php
require("PHPMailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->SingleTo = true;
$mail->CharSet = "UTF-8";
$mail->Subject = "Our news";
$r_receivers = array("John"=>"john@mail.com","Mary"=>"mary@mail.com","Rob"=>"rob@mail.com");
foreach($r_receivers as $name=>$email){
$mail->SetFrom('no-reply@oursite.com', "Oursite");
$mail->MsgHTML($sendContent);
$mail->AddAddress($email, $name);
$sendContent = "<p>E-mail body</p>";
if($mail->Send())
echo "Sent to: ".$email."<br/>";
else
echo "Not sent to: ".$email.", reason: ".$mail->ErrorInfo."<br/>";
$mail->ClearAddresses();
}?>
このコードをajaxで呼び出すと、完璧に機能します。ただし、このコードをブラウザで実行するか、更新するか、cron ジョブで呼び出すと、重複が送信されます。
ブラウザ/リフレッシュで開いたときになぜうまくいかないのか、誰か説明してもらえますか? ajaxで呼び出すのとブラウザから呼び出すのとで結果が違うのはなぜですか?