1

我正在尝试向存储在 mysql 数据库中的一组人发送消息,这些人的值为 name 和 email。现在我只是想发送一封电子邮件,上面写着“你好 $name”。出于某种原因,每个人都收到了电子邮件,但他们收到了所有三封电子邮件,每封都说“你好(不同的名字)”

以下是相关代码:

$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;
        } 
    }
4

2 回答 2

5

每次通过循环时,您都需要将 $mail 对象重置为新实例。否则,您将一遍又一遍地将地址添加到同一个邮件中。

于 2012-12-07T03:07:27.543 回答
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();这将清除之前添加的任何电子邮件。

于 2012-12-07T03:17:34.270 回答