如何为 PHP 中的电子邮件收件人制作有效的循环脚本(使用 PHPMailer)
How to make a valid looping script for email recipients in PHP (with PHPMailer)
我想为数据库中注册的 2000 个电子邮件地址制作一个电子邮件传送系统。
我遇到了错误的循环问题。这样 1 个收件人会收到多封电子邮件。
请帮忙,谢谢
这是一段脚本:
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->AddAddress($data_email['email'], $data_email['agent_name']);
$mail->MsgHTML($mail_body);
$sent = $mail->Send();
}
由于 AddAddress() 是一种方法,它会在每个循环中添加一封电子邮件。
您必须在非常循环中清除地址或创建新对象。
更好的方法是清除地址。
$mail->clearAddresses(); // clear all [to] recipients.
$mail->clearAllRecipients(); // clear all recipients [to cc bcc] etc.
更新代码:
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(); // clear all [to] recipients.
$mail->clearAllRecipients(); // clear all recipients [to cc bcc] etc.
$mail->AddAddress($data_email['email'], $data_email['agent_name']);
$mail->MsgHTML($mail_body);
$sent = $mail->Send();
}
我想为数据库中注册的 2000 个电子邮件地址制作一个电子邮件传送系统。
我遇到了错误的循环问题。这样 1 个收件人会收到多封电子邮件。
请帮忙,谢谢
这是一段脚本:
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->AddAddress($data_email['email'], $data_email['agent_name']);
$mail->MsgHTML($mail_body);
$sent = $mail->Send();
}
由于 AddAddress() 是一种方法,它会在每个循环中添加一封电子邮件。
您必须在非常循环中清除地址或创建新对象。
更好的方法是清除地址。
$mail->clearAddresses(); // clear all [to] recipients.
$mail->clearAllRecipients(); // clear all recipients [to cc bcc] etc.
更新代码:
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(); // clear all [to] recipients.
$mail->clearAllRecipients(); // clear all recipients [to cc bcc] etc.
$mail->AddAddress($data_email['email'], $data_email['agent_name']);
$mail->MsgHTML($mail_body);
$sent = $mail->Send();
}