Symfony 1.4中的新闻稿模块

时间:2010-11-23 10:34:04

标签: php email message-queue symfony-1.4 newsletter

我正在我的网站上开发一个新闻稿模块,我从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);

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

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

如果有可能,您是否可以帮助找到更好的解决方案?

谢谢

1 个答案:

答案 0 :(得分:1)

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

其次,如果您只将一个电子邮件添加到一个电子邮件中,则最长执行时间不会成为问题,因为当您调用$ this-> getMailer时,它只会连接到底层SMTP /邮件程序一次) - >发送($消息)

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

More With Symfony一书中了解有关假脱机功能的更多信息。