我正在我的网站上开发一个新闻稿模块,我从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);
电子邮件已发送,但在收件人列表中,您可以看到所有用户,而不仅仅是您...
此外,有可能有很多收件人。那么也许我需要一个等待列表以避免最大执行时间错误?
如果有可能,您是否可以帮助找到更好的解决方案?
谢谢
答案 0 :(得分:1)
首先,要隐藏收件人列表,必须使用Swiftmailer的setBcc()函数而不是setTo()。这会将电子邮件地址添加为盲目复制副本,这意味着他们将无法“看到”彼此。另外,添加您自己的地址(例如noreply@domain.com)作为setTo()地址。
其次,如果您只将一个电子邮件添加到一个电子邮件中,则最长执行时间不会成为问题,因为当您调用$ this-> getMailer时,它只会连接到底层SMTP /邮件程序一次) - >发送($消息)
我建议你看看假脱机功能,因为它提供了更好的性能,并让后台进程处理实际的电子邮件(你只需添加到数据库中的表,让它等待cronjob发送邮件)。更改上面的代码以遍历所有收件人,并为每个收件人创建一封电子邮件并将其添加到假脱机。这样,您还可以使用setTo()函数为收件人显示正确的地址。
在More With Symfony一书中了解有关假脱机功能的更多信息。