Когда я пытаюсь отправить электронное письмо из цикла while с помощью PHPMailer, он иногда отправляет 2, иногда 3 копии одного и того же электронного письма (это похоже на случайное) каждому получателю.
Вот мой код. Как вы думаете, у него проблемы?
$list = $_POST['list'];
$items = rtrim($_POST['items'],",");
$query = "SELECT * FROM `mail` WHERE `ID` IN ($items)";
$result = mysql_query($query);
$from = "[email protected]";
$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.
ИСПРАВЛЕНИЕ: я сделал, я только что добавил $body = "";
, и теперь он отлично работает!