2012-12-07 120 views
0

我想将邮件发送给一组存储在mysql数据库中的名称和电子邮件地址的人。现在我只是想发送一封电子邮件,里面写着“hello $ name”。出于某种原因,每个人都收到了电子邮件,但他们收到的所有三封邮件,每一个说“你好(不同的名字)”PHP邮件发送重复邮件

下面是相关代码:

$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; 
     } 
    } 
+0

嘿,你设法让所有的东西都能正常工作吗?如果其中一个答案帮助你,你应该接受一个答案。 – SeanWM

回答

4

通过你需要在每次循环将$ mail对象重置为新的实例。否则,你会反复将地址添加到同一邮件。

4

试试这个:

$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();将清除添加的任何之前的电子邮件。

+0

可能对'SELECT DISTINCT电子邮件名称'没有影响, –

+0

您尚未解释您所做的更改或您的更改如何提供帮助。 – Charles

+0

ClearAddresses()函数调用很明显这里正在做什么 –