我正在使用PHPMailer发送电子邮件。我在foreach循环中使用它,以便向收件人列表发送电子邮件。
它正在运行,因为正在发送电子邮件,但每个收件人都会收到整个收件人列表!
foreach ($id as $item) {
$mail->addAddress($item);
$mail->Subject = $correo['mailAsunto'];
$mail->Body = $correo['mailMensaje'];
if(!$mail->send()) {
echo 'Error: ' . $mail->ErrorInfo;
} else {
echo 'Mail sent to '.$item.'<br>';
}
}
我已经尝试过:$mail->AddBCC($item);
而不是addAddress
,但电子邮件仍然可以在&#34; TO&#34;头。
我该怎么办?这可能会对隐私产生严重影响。
万一有人遇到类似问题,收到回复后,现在代码如下:
foreach ($id as $item) {
$mail->addAddress($item);
$mail->Subject = $correo['mailAsunto'];
$mail->Body = $correo['mailMensaje'];
if(!$mail->send()) {
echo 'Error: ' . $mail->ErrorInfo;
} else {
echo 'Mail sent to '.$item.'<br>';
$mail->ClearAddresses();
$mail->ClearAllRecipients();
}
}
答案 0 :(得分:2)
假设这是正确的PHPMailer github repo,请查看https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php#L358。您需要将该标志设置为true。然后,等到循环后执行send
函数。
答案 1 :(得分:2)
您正在将地址添加到同一对象,因此它们正在累积。发送邮件后尝试删除每个地址:
foreach ($id as $item) {
$mail->addAddress($item);
$mail->Subject = $correo['mailAsunto'];
$mail->Body = $correo['mailMensaje'];
if(!$mail->send()) {
echo 'Error: ' . $mail->ErrorInfo;
} else {
echo 'Mail sent to '.$item.'<br>';
}
$mail->ClearAllRecipients(); ◄■■■■■■■■■■■■■■■■■■■■■■■■■
}