自從兩個月前我已經遇到了這個問題,並且仍在與之交往。 我爲我的郵件列表程序使用PHPMailer。我有一個cron工作在某些時候運行。但是,電子郵件存在問題。如果刷新頁面,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();
}?>
當我打電話與AJAX這個代碼,它可以完美運行。但是,如果我在瀏覽器中執行此代碼或刷新它或使用cron作業調用它,它會向我發送重複項。
有人能解釋我爲什麼會去錯了,當我用瀏覽器中打開/刷新?爲什麼我用ajax調用它並從瀏覽器調用它會得到不同的結果?
當您重新加載網頁時,您執行一個新的請求。所以代碼再次執行,郵件將被髮送出去。考慮檢查上次發送操作的時間和IP,直到一段時間纔會執行。 – thedom
你的意思是說,當你在瀏覽器中加載它時,你會收到多個電子郵件? – andrewsi
是的,當我在瀏覽器中加載此文件時,我收到多個電子郵件。 – ayok