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

时间:2012-12-07 03:05:28

标签: 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;
        } 
    }

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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;
        } 
    }

我添加了$mail->ClearAddresses();,这将清除之前添加的所有电子邮件。