You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP(PHPMailer)编写有效循环邮件脚本解决重复发送问题

解决PHPMailer循环发送邮件时重复收件的问题

我一眼就看出问题所在了——你在while循环里每次调用$mail->AddAddress(),但PHPMailer的这个方法是累加添加收件人的,不是替换。也就是说第一次循环给收件人A发邮件,第二次会同时发给A和B,第三次是A、B、C一起收……以此类推,自然前面的收件人会收到多封重复邮件。

具体修复方案

你需要在每次循环的开头(或末尾)重置PHPMailer的收件人列表,同时建议处理好其他可能的残留内容,比如附件。修改后的脚本片段如下:

include "phpmailer/classes/class.phpmailer.php";
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->SMTPSecure = 'ssl';
$mail->Host = "domain.com";
$mail->SMTPDebug = 2;
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = "no-reply@domain.com";
$mail->Password = "passsword";
$mail->SetFrom("no-reply@domain.com","No Reply");
$mail->Subject = $mail_subject;

$query_email_list = mysqli_query($koneksi, "SELECT * FROM table");
while($data_email = mysqli_fetch_array($query_email_list)){
    // 生成二维码
    QRCode::png($data_email['email'], $tempdir. $data_email['email'].".png", $quality, $ukuran, $padding);
    
    // 处理邮件模板
    $mail_body = file_get_contents('template/template_email_blast.html');
    $mail_body = str_replace('{email}', $data_email['email'], $mail_body);
    $mail_body = str_replace('{nama_agent}', $data_email['agent_name'], $mail_body);
    $mail_body = str_replace('{tempat_duduk}', $data_email['meja'], $mail_body);
    
    // 关键操作:每次循环前清空所有收件人
    $mail->clearAddresses();
    // 如果用到了抄送/密送,也要同步清空
    // $mail->clearCCs();
    // $mail->clearBCCs();
    
    // 添加当前单个收件人
    $mail->AddAddress($data_email['email'], $data_email['agent_name']);
    
    // 设置邮件正文
    $mail->MsgHTML($mail_body);
    
    // 发送邮件
    $sent = $mail->Send();

    // 可选优化:发送后删除临时二维码文件,避免占用服务器空间
    unlink($tempdir. $data_email['email'].".png");
    // 可选:添加失败日志,方便排查问题
    if(!$sent) {
        error_log("发送邮件给".$data_email['email']."失败: ".$mail->ErrorInfo);
    }
}

额外说明

  • clearAddresses()是PHPMailer专门用来清空收件人列表的方法,确保每次循环只有当前的单个收件人。
  • 如果你后续需要添加抄送或密送,记得也要调用对应的clearCCs()和clearBCCs()方法,避免残留收件人。
  • 临时生成的二维码文件建议发送后立即删除,不然2000个文件会白白占用服务器存储空间。

内容的提问来源于stack exchange,提问作者ujang7654321 ujang7654321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:02:12