0

我正在我的网站上开发一个时事通讯模块,我从 Symfony 1.4 版本开始。我想将我的电子邮件发送给多个收件人。

我尝试了这个简单的解决方案(使用实时交付策略):

$message = $this->getMailer()->compose();
$message->setSubject('My subject');
$message->setTo(array('email1@domain.com', 'email2@domain.com'));
$message->setFrom('expeditor@domain.com', 'Name of expeditor');
$html = $this->getPartial('module/action', array('var'=>$var));
$message->setBody($html, 'text/html');
$number = $this->getMailer()->send($message);

电子邮件已发送,但在收件人列表中,您可以看到所有用户,而不仅仅是您...

此外,可能有很多收件人。所以也许我需要一个等待名单来避免最大执行时间错误?

如果可能的话,您能否通过示例帮助找到更好的解决方案?

谢谢

4

1 回答 1

1

首先,要隐藏收件人列表,您必须使用 Swiftmailer 的 setBcc() 函数而不是 setTo()。这会将电子邮件地址添加为密件抄送收件人,这意味着他们将无法“看到”彼此。此外,添加您自己的地址(例如 noreply@domain.com)作为 setTo() 地址。

其次,如果您将所有收件人添加到一封电子邮件,最大执行时间不会成为问题,因为当您调用 $this->getMailer()->send 时,它只会连接到底层 SMTP/mailer 一次($消息)。

但是,我建议您查看 spool 功能,因为它提供了更好的性能,并让后台进程处理实际的电子邮件发送(您只需添加到数据库中的表并让它等待 cronjob 发送邮件)。更改上面的代码以遍历所有收件人并为每个收件人创建一封电子邮件并将其添加到假脱机。这样,您还可以使用 setTo() 函数为收件人获取正确的收件人地址。

在More With Symfony一书中阅读更多关于假脱机功能的信息。

于 2010-11-23T14:55:36.133 回答