2 달 전부터이 문제가 발생하여 여전히이 문제가 있습니다. 내 메일 링리스트 프로그램에 PHPMailer를 사용하고 있습니다. 그리고 나는 특정 시간에 달리는 크론 직업을 가지고있다. 그러나 이메일에 문제가 있습니다.페이지가 새로 고쳐지면 PHPmailer가 중복 메일을 보냅니다.
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"=>"[email protected]","Mary"=>"[email protected]","Rob"=>"[email protected]");
foreach($r_receivers as $name=>$email){
$mail->SetFrom('[email protected]', "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();
}?>
이 코드를 아약스로 호출하면 완벽하게 작동합니다. 그러나 브라우저에서이 코드를 실행하거나 새로 고치거나 cron 작업으로 호출하면 사본이 나에게 전송됩니다.
누군가 브라우저/새로 고침을 열 때 왜 잘못 될지 설명 할 수 있습니까? 왜 내가 아약스로 부르고 브라우저에서 불러서 다른 결과를 얻었 을까?
웹 페이지를 다시로드하면 새 요청을 실행합니다. 그래서 코드가 다시 실행되고 메일이 발송됩니다. 이전 send 액션에서 시간과 ip를 확인하고 잠시 시간이 지날 때까지 실행되지 않도록하십시오. – thedom
브라우저에 이것을로드 할 때 둘 이상의 전자 메일이 전송된다는 의미입니까? – andrewsi
예, 브라우저에서이 파일을로드하면 둘 이상의 이메일을 수신합니다. – ayok