phpMailer - 如何删除收件人

61

这个话题在StackOverflow上有很多相关问题,但我没找到一个能解决我的问题的。我正在编写的脚本需要向不同的收件人发送多封电子邮件,并且内容也不同。

我可以通过多次重新初始化phpMailer对象来实现这个目标,但是我想只创建一次对象,然后重新分配以下字段:

$mail->AddAddress($email);
$mail->Subject = $subject;
$mail->IsHTML(false);
$mail->Body = $message;
那样一来,我就可以运行这四行代码,然后发送邮件,反复进行多次,直到完成。易于更改的字段包括“主题”、“IsHTML”和“正文”,所以我遇到的问题在于“AddAddress”函数中。
可以想象,在发送第一封电子邮件后,更改收件人将导致这些收件人堆叠到当前收件人列表上。
简单地说,我该如何删除与我的$mail对象相关联的电子邮件地址,以便每次分配时都可以删除旧地址? 是否有除了AddAddress之外的其他函数可以仅分配地址?

把剩下的初始化工作放在一个函数里怎么样?这样你就可以轻松地创建一个几乎初始化完成的实例并设置其余字段。 - Svish
1
这实际上就是我正在做的事情。我有一个init_mailer函数,它创建对象并分配除我上面发布的那四行之外的所有选项。我正在尽可能地优化它。 - Joe Majewski
2个回答

128

1
@JoeMajewski 这里有一份文档 http://xref.wordpress.org/trunk/PHPMailer/PHPMailer.html - ravi404

38

在向收件人发送电子邮件之前,我总是使用这个:

// 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


2
从上面的帖子可以判断,ClearAllRecipients 函数将删除地址、抄送和密送,而您列出的函数只会删除指定字段中的那些地址。如果我理解正确,调用这三个函数将产生与 ClearAllRecipients 相同的效果。非常感谢您的帮助。 - Joe Majewski
2
是的,这几乎会产生相同的效果,但我想以这种方式调用它们,以便进行有选择性的删除(有时)。 - user1299518
2
当然。我没有打算在我的脚本中使用任何CC或BCC,所以我会使用ClearAddresses函数来提高效率。 - Joe Majewski
1
谢谢,这个对我的需求非常完美。干杯! - user752746

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接