Как сделать корректный скрипт зацикливания для получателей электронной почты на PHP (с PHPMailer) - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу создать систему доставки электронной почты на адреса электронной почты 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();
    }

1 Ответ

0 голосов
/ 27 февраля 2019

Поскольку метод 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();
    }

Справочные документы

...