使用Symfony2和Swiftmailer的高效时事通讯

时间:2013-08-22 22:19:24

标签: php email symfony swiftmailer

我正在尝试根据Symfony2和Swiftmailer向大约17000人发送每周简报。我目前的问题是,我为控制台编写了一个命令。我可以通过“php app / console mail:send --newsletter 0 500”来调用它。最后两个数字是偏移量的附加变量和应该一次选择的收件人数量。我通常想要做的是使用一个cronjob,它调用此命令一次,在这种情况下,偏移量为0,数量为20.000,以获取所有收件人。这不起作用或至少邮件数量只是大。我的第一个测试是自己发送这些邮件,以便我可以看到发生了什么。脚本永远不会结束,直到达到500或更少。这是正常的吗?

以下是我的工作:

  1. 从数据库中获取用户
  2. 从我希望在此简报中发送的数据库中找到文章
  3. 运行所有收件人,通过$ message = \ Swift_Message :: newInstance()生成新邮件...并调用$ this-> mailer-> send($ message);
  4. 最后通过执行以下操作来刷新队列:

    $spool = $this->mailer->getTransport()->getSpool();
    $transport = $this->getContainer()->get('swiftmailer.transport.real');
    $spool->flushQueue($transport);
    
  5. 关于我不确定的是我现在应该如何发送所有这些邮件。用cronjob调用shell脚本是错误的,通过更改偏移量来迭代此命令,这样一次只能生成500个邮件?或者这样做的正确方法是什么?或者我完全错了,这就是为什么我不能发送超过500的?以1000为例,控制台在我取消脚本之前不再做出反应。我已经尝试在后台启动它,但似乎脚本根本就没有工作......没有错误或类似的事情发生,只是没有反应。

    编辑或者使用特定邮箱发送所有这些邮件更好,而不是使用带有mail() - 函数的PHP,这可能也是在SwiftMailer中使用的?

    非常感谢你的帮助! 曼努埃尔

1 个答案:

答案 0 :(得分:0)

我们有类似的情况,我们决定使用奏鸣曲通知捆绑+ RabbitMQ。您可以创建一个控制台命令来生成所有信息并将其发送到RabbitMQ,然后使用奏鸣曲包,您可以创建一个消耗管理队列以发送电子邮件组。
如果您在这里需要帮助,我们就是