PhpMailer, ClearAddresses () не будет работать, сообщение будет отправлено всем

Я пытаюсь отправлять разные сообщения разным пользователям. Я создал массив адресов электронной почты и, перебирая его, хочу отправить сообщение2 пользователю2.

При повторном использовании одного и того же почтового экземпляра в начале каждой итерации я объявляю $ mail -> ClearAddresses (), но теперь user2 получает сообщение user1, user2 … и так далее.

Что мне не хватает, что Адрес не будет очищен в начале итерации?

Спасибо!

//settings

$mail = new PHPMailer;

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'xxx';                  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'xxx';          // SMTP username
$mail->Password = 'xxx';                    // SMTP password
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;
$mail->CharSet = "UTF-8";                             // TCP port to connect to

function sendInvoice($mail, $addresses){

foreach($addresses as $recipient){

$mail->ClearAddresses();
$mail->setFrom('mail@domain.eu', 'My Server');
$mail->addAddress($recipient['email'], $recipient['name']);         // Add a recipient
$mail->addReplyTo('mail@domain.eu', 'My Server');


$mail->isHTML(true);

$mail->Subject = $recipient[subject];
//$mail->Body    = $message;
$mail->MsgHTML($recipient[message]);

if(!$mail->send()) {

echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {
//echo 'Message has been sent';
}
}

}

2

Решение

В вашем коде измените:

$mail->ClearAddresses();

чтобы:

$mail->ClearAllRecipients();

Это должно решить проблему.

3

Другие решения

Других решений пока нет …

А ты уже прошел курс программирования? Супер скидка!
Прокачать скилл $$$
×