PHPMailer在发送电子邮件时会显示列表中的所有收件人吗?

时间:2016-09-16 15:51:39

标签: php email phpmailer

我正在使用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();
        }
}

2 个答案:

答案 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();    ◄■■■■■■■■■■■■■■■■■■■■■■■■■
}