【问题标题】:Newsletter module in Symfony 1.4Symfony 1.4 中的时事通讯模块
【发布时间】:2011-05-14 09:31:34
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的帮助,这样更好!
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2011-05-20
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多