当我尝试使用 PHPMailer 从 while 循环发送电子邮件时,它有时会向每个收件人发送 2 个、有时 3 个相同电子邮件的副本(就像随机的一样)。
这是我的代码。你觉得它有问题吗?
$list = $_POST['list'];
$items = rtrim($_POST['items'],",");
$query = "SELECT * FROM `mail` WHERE `ID` IN ($items)";
$result = mysql_query($query);
$from = "donotreply@mysite.net";
$fromname = "mysite";
$mail = new PHPMailer(true);
$mail->IsSendmail();
$mail->From = $from;
$mail->FromName = $fromname;
$mail->Subject = "Your subscription was confirmed";
while ($row = mysql_fetch_array ($result))
{
// HTML body
$body .= "<p>Hi ". $row['name'] ." <br /><br />";
$body .= "Your subscription request to " . $l_name ."'s list was confirmed.<br /><br />";
$body .= "Thank You !<br /><br />";
// Plain text body (for mail clients that cannot read HTML)
$text_body = "To view the message, please use an HTML compatible email viewer!";
$mail->Body = $body;
$mail->AltBody = $text_body;
$mail->AddAddress($row['email']);
$mail->Send();
$mail->ClearAddresses();
}
你认为我应该把它mail->send();
放在while循环之外并从一个数组中获取所有电子邮件吗?
还是您认为这是 MySQL 查询的问题?
编辑:我检查了数据库,关于数据库没有问题,但我发现(假设数组中有 2 封邮件)它正常发送第一封电子邮件,但第二封邮件带有复制的 $body 变量,我的意思是它发送复制的 $body 变量。
FIX:嘿,我完成了,我刚刚添加了$body = "";
它现在完美!