【问题标题】:phpMailer - How do you Remove RecipientsphpMailer - 你如何删除收件人
【发布时间】:2012-06-12 17:24:17
【问题描述】:

关于这个主题有很多 StackOverflow 问题,但我找不到能够帮助解决我遇到的问题的问题。我正在编写的脚本向不同的收件人发送多封电子邮件,其中包含不同的邮件内容。

我可以通过多次重新初始化 phpMailer 对象来完成这项工作,但我想做的是一次创建对象,然后重新分配以下字段:

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

这样我就可以只运行这四行代码,然后根据需要一次又一次地发送邮件。 SubjectIsHTMLBody 字段很容易更改,所以我遇到的问题在于 AddAddress 函数。

正如您可能猜到的,在我发送第一封电子邮件后,更改未来电子邮件的收件人将导致这些收件人堆叠到当前收件人列表中。

简单地说,如何删除与我的$mail 对象关联的电子邮件地址,以便在每次删除旧地址时都可以分配它们?

除了AddAddress 之外,我还可以使用其他函数来分配地址吗?

【问题讨论】:

  • 把剩下的初始化放在一个函数中怎么样?然后您可以轻松创建一个几乎启动的实例并设置其余字段。
  • 这就是我正在做的事情。我有一个init_mailer 函数,它创建对象并分配除了我在上面发布的那四行之外的所有选项。我正在尝试尽可能地优化它。

标签: php email phpmailer


【解决方案1】:

您可以使用clearAllRecipients( )

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

【讨论】:

【解决方案2】:

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

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

然后我这样做:(不使用抄送或密件抄送,$toaddress 只是一个收件人数组)

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

我正在使用 PHPMailer 5.2

【讨论】:

  • 所以从上面的帖子来看,ClearAllRecipients 函数会删除地址、抄送和密件抄送,而您列出的函数只会删除指定字段中的那些地址。如果我理解正确,调用所有这三个函数将具有与ClearAllRecipients 相同的效果。非常感谢您的帮助。
  • 是的,这将产生几乎相同的效果,但我想这样称呼它们以便应用选择性删除(有时)
  • 当然。我不打算在我的脚本中使用任何抄送或密件抄送,所以我将只使用ClearAddresses 函数来提高效率。
  • 谢谢,这非常适合我的需求。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多