2

我正在尝试基于 Symfony2 和 Swiftmailer 向大约 17.000 人发送每周通讯。我目前的问题是,我为控制台编写了一个命令。例如,我可以通过“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);
    

我不确定现在应该如何发送所有这些邮件。仅使用 cronjob 调用 shell 脚本是否错误,该脚本通过更改偏移量来迭代此命令,以便一次仅生成 500 封邮件?或者这样做的正确方法是什么?还是我做错了,这就是为什么我不能发送超过 500 个?以 1000 为例,在我取消脚本之前,控制台不再做出反应。我已经尝试在后台启动它,但似乎脚本根本不起作用......并且没有发生错误或类似的事情,只是没有反应。

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

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

4

1 回答 1

0

我们有一个类似的场景,我们决定使用奏鸣曲通知包 + RabbitMQ。您可以创建一个控制台命令来生成所有信息并将其发送到 RabbitMQ,然后使用奏鸣曲包您可以创建一个管理队列以发送电子邮件组的消费。
如果您在此处需要有关其配置的帮助,我们在

于 2013-08-29T13:44:11.810 回答