繁体   English   中英

如何阻止PHP Mailer在每个电子邮件上附加所有电子邮件地址?

[英]How to stop PHP Mailer from appending all email address on every email?

我一直在尝试许多不同的方法来防止PHP Mailer将来自数据库的每个电子邮件地址附加到每个电子邮件中。

我觉得并不是每个用户都可以从我的网站收到一封电子邮件,也无法看到其他几千封电子邮件添加到同一封电子邮件中。

这是我的代码,我已经尝试过许多不同的事情:

$query_select = "SELECT * FROM users";
$query = mysqli_query($connection, $query_select);

if($select_to == 'all'){
    while($row = mysqli_fetch_assoc($query)) {
        $user_email = $row['user_email']; 
        $send_to = $user_email;

        $mail->setFrom('example@gmail.com', 'My website');
        $mail->addAddress($send_to); 

        $mail->isHTML(true);
        $mail->Subject = $subject_email;
        $mail->Body    = $content_email;
        $mail->AltBody = $content_email;
    }
} else {
    if($select_to == 'single'){
        $send_to = $to_single_email;
    }
}




if($mail->send()){
    $confirm = 'Sent.';
    $send = array(
        'confirm'=>$confirm
    );
    echo json_encode($send);

} else {
    $confirm = 'There was en error while sending this email.';
    $send = array(
        'confirm'=>$confirm
    );
    echo json_encode($send);
}

$mail->send()将通过一条消息发送到所有地址。 相反,您需要向每个收件人发送一封邮件。

while()循环将类似于以下内容进行重构:

while($row = mysqli_fetch_assoc($query)) {
    $user_email = $row['user_email']; 
    $send_to = $user_email;

    $mail->setFrom('example@gmail.com', 'My website');
    $mail->addAddress($send_to); 

    $mail->isHTML(true);
    $mail->Subject = $subject_email;
    $mail->Body    = $content_email;
    $mail->AltBody = $content_email;
    $mail->send();
    $mail->clearAllRecipients();
}

clearAllRecipients()的调用将清除以前的地址,否则这些地址将通过addAddress()累积

您还需要为每个send()调用在循环内添加错误检查

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM