PHP邮件程序发送重复的邮件

use*_*522 1 php email phpmailer

我正在尝试向一组存储在具有名称和电子邮件值的mysql数据库中的人发送消息.现在我只是想发送一封说"你好名字"的电子邮件.出于某种原因,每个人都会收到电子邮件,但他们会收到所有三封电子邮件,每封都说"你好(不同的名字)"

这是相关代码:

$result = mysql_query("SELECT `name`, `email` FROM `emails`");

    while ($rows = mysql_fetch_array($result))
    {   
        $name = $rows["name"];
        $email = $rows["email"];

        $mail->AddAddress($email, $name);

        $mail->Subject = "Your Daily Update";

        $mail->Body = "Hello $name, ";

        if(!$mail->Send()) 
        {
        echo 'Mailer error: ' . $mail->ErrorInfo;
        } 
    }
Run Code Online (Sandbox Code Playgroud)

Rim*_*son 5

每次循环都需要将$ mail对象重置为新实例.否则,您将一遍又一遍地向同一邮件添加地址.


Sea*_*nWM 5

试试这个:

$result = mysql_query("SELECT `name`, `email` FROM `emails`");

    while ($rows = mysql_fetch_array($result))
    {   
        $name = $rows["name"];
        $email = $rows["email"];
        $mail->ClearAddresses();
        $mail->AddAddress($email, $name);

        $mail->Subject = "Your Daily Update";

        $mail->Body = "Hello $name, ";

        if(!$mail->Send()) 
        {
        echo 'Mailer error: ' . $mail->ErrorInfo;
        } 
    }
Run Code Online (Sandbox Code Playgroud)

我添加了$mail->ClearAddresses();哪个将清除之前添加的任何电子邮件.