2012-06-08 28 views
36

關於這個主題有很多StackOverflow的問題,但我找不到一個能夠幫助解決我遇到的問題。我正在編寫的腳本將多封電子郵件發送給具有不同郵件內容的各種收件人。phpMailer - 你如何刪除收件人

我可以通過重新初始化phpMailer對象多次,但我希望能夠做的是創建對象的單個時間,然後重新分配以下領域這方面的工作:

$mail->AddAddress($email); 
$mail->Subject = $subject; 
$mail->IsHTML(false); 
$mail->Body = $message; 

這樣我就可以運行這四行代碼,然後一次又一次地發送郵件,根據需要多次發送。 Subject,IsHTMLBody字段很容易更改,所以我遇到的問題是AddAddress函數。

正如您大概猜測的那樣,在發送第一封電子郵件後,更改未來電子郵件的收件人將導致那些堆疊到當前收件人列表中。

簡單來說,如何刪除與我的$mail對象關聯的電子郵件地址,以便每次刪除舊地址時都可以指定它們?

除了AddAddress之外還有另外一個功能,我可以用它來分配地址嗎?

+0

如何在函數中粘貼初始化的其餘部分?然後您可以輕鬆創建一個幾乎啓動的實例並設置其餘的字段。 – Svish

+1

這就是我正在做的。我有一個'init_mailer'函數來創建對象並分配除了我上面發佈的那四行外的所有選項。我試圖儘可能優化這一點。 –

回答

78

您可以使用ClearAllRecipients()

$mailer->ClearAllRecipients(); // clear all

+1

@JoeMajewski這是一個文檔http://xref.wordpress.org/trunk/PHPMailer/PHPMailer.html – ravi404

24

IM使用這個始終將電子郵件發送到收件人之前:

// clear addresses of all types 
$mail->ClearAddresses(); // each AddAddress add to list 
$mail->ClearCCs(); 
$mail->ClearBCCs(); 

然後即時通訊正是這樣做的:(不使用CC或BCC,$的toAddress只是收件人數組)

foreach($toaddress as $key=>$val) { $mail->AddAddress($val); } 

即時通訊使用的PHPMailer 5.2

+0

因此,從上面的帖子判斷,ClearAllRecipients功能將刪除地址,CC和BCC,而列出的功能將只刪除指定字段中的地址。如果我理解正確,調用所有這三個函數將具有與「ClearAllRecipients」相同的效果。非常感謝您的幫助。 –

+1

是的,這會有幾乎相同的效果,但我想這樣稱呼他們,以便應用選擇性刪除(有時) – 2012-06-08 16:45:56

+1

當然。我不打算在腳本中使用任何CC或BCC,所以我只是使用ClearAddresses函數來提高效率。 –

相關問題