2012-12-07 114 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()函數調用很明顯這裏正在做什麼 –