2013-02-27 106 views
1

我在我的數據庫中有一張表,其中包含要發送的電子郵件。腳本作爲cron作業定期運行,以便從表中讀取數據並通過SMTP服務器發送電子郵件。我在這裏使用PHPMailer進行工作。該腳本運行一個發送電子郵件的循環,直到表中的所有電子郵件都發送完畢。如何不讓PHPmailer發送包含多個'to'地址的電子郵件?

問題是,大多數連續發送的電子郵件都有一個共同的主題。所以當循環運行時,不知何故,所有發送的電子郵件都有一個很長的'to'列表。因此,基本上如果5個電子郵件條目(具有不同的地址)具有相同的主題和相同的內容,那麼它最終只發送1個具有5個地址(每個電子郵件條目之一)的電子郵件到'到'字段。這揭示了每個人的電子郵件地址給列表中的其他人。這是不可取的,並且電子郵件只能發送給一個人。

我不知道這裏玩什麼。有什麼建議麼?

+0

似乎你應該循環使用併發送電子郵件,而不是循環使用電子郵件和添加用戶。 – Axel 2013-02-27 22:19:52

回答

2

你在做這樣的事嗎?

$mailer = new PHPMailer(); 

while($row = fetch_from_db()) { 
    $mailer->AddAddress($row['email']); 
    $mailer->send(); 
} 

如果是這樣,你需要做一個

$mailer->ClearAllRecipients() 

您發送每封電子郵件後,讓你用「新鮮」 To:名單開始了。

+0

我被這個問題困擾了。感謝您的幫助,它的工作原理。 :) – 2013-02-28 04:31:23

0

月1日,從你的數據庫

$contacts = 'GET CONTACTS ARRAY FROM DB' 
     if(!empty($contacts)){ 
      foreach ($contacts as $crt_contact){ 
       $emails[] = $crt_contact->email ; 
      } 
     } 

第二使用聯繫人下面創建 「到」 場

$to = implode(',', array_unique($emails)); 

使用$to郵件發送()函數

+0

這是一個崇高的想法,但我試圖做的是發送個人電子郵件給人,沒有人發送電子郵件給幾個人。我想,我可以做的是使用一個「到」地址,其餘的可以發送到「密送」。讓我看看。 – 2013-02-28 04:12:04