我正在尝试基于 Symfony2 和 Swiftmailer 向大约 17.000 人发送每周通讯。我目前的问题是,我为控制台编写了一个命令。例如,我可以通过“php app/console mail:send --newsletter 0 500”来调用它。最后两个数字是偏移量和应立即选择的收件人数量的附加变量。我通常想做的是使用一个 cronjob,它调用这个命令一次,在这种情况下,偏移量为 0,数量为 20.000 以获取所有收件人。这是行不通的,或者至少邮件数量太大了。我的第一个测试是自己发送这些邮件,这样我就可以看到发生了什么。直到我达到 500 或更少的数量,脚本才结束。这是正常的吗?
这是我所做的:
- 从数据库中获取用户
- 从数据库中查找我想在此时事通讯中发送的文章
- 遍历所有收件人,通过 $message = \Swift_Message::newInstance()... 生成一条新消息并调用 $this->mailer->send($message);
最后通过这样做刷新队列:
$spool = $this->mailer->getTransport()->getSpool(); $transport = $this->getContainer()->get('swiftmailer.transport.real'); $spool->flushQueue($transport);
我不确定现在应该如何发送所有这些邮件。仅使用 cronjob 调用 shell 脚本是否错误,该脚本通过更改偏移量来迭代此命令,以便一次仅生成 500 封邮件?或者这样做的正确方法是什么?还是我做错了,这就是为什么我不能发送超过 500 个?以 1000 为例,在我取消脚本之前,控制台不再做出反应。我已经尝试在后台启动它,但似乎脚本根本不起作用......并且没有发生错误或类似的事情,只是没有反应。
编辑:或者使用特定邮箱发送所有这些邮件而不是使用带有 mail() 函数的 PHP 更好,这可能也在 SwiftMailer 中使用?
非常感谢您的帮助!曼努埃尔