Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Symfony2和Swiftmailer的高效时事通讯_Php_Email_Symfony_Swiftmailer - Fatal编程技术网

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

Php 使用Symfony2和Swiftmailer的高效时事通讯,php,email,symfony,swiftmailer,Php,Email,Symfony,Swiftmailer,我正试图向大约17000人发送一份基于Symfony2和Swiftmailer的每周通讯。我当前的问题是,我为控制台编写了一个命令。例如,我可以通过“php应用程序/控制台邮件:发送——时事通讯0500”来调用它。最后两个数字是偏移量和应立即选择的收件人数量的附加变量。我通常想做的是使用cronjob,它调用此命令一次,在本例中,偏移量为0,数量为20.000,以获取所有收件人。这不起作用,或者至少邮件量太大了。我的第一个测试是自己发送这些邮件,这样我就可以看到发生了什么。直到我达到500或更少

我正试图向大约17000人发送一份基于Symfony2和Swiftmailer的每周通讯。我当前的问题是,我为控制台编写了一个命令。例如,我可以通过“php应用程序/控制台邮件:发送——时事通讯0500”来调用它。最后两个数字是偏移量和应立即选择的收件人数量的附加变量。我通常想做的是使用cronjob,它调用此命令一次,在本例中,偏移量为0,数量为20.000,以获取所有收件人。这不起作用,或者至少邮件量太大了。我的第一个测试是自己发送这些邮件,这样我就可以看到发生了什么。直到我达到500或更少,剧本才结束。这正常吗

以下是我的工作:

  • 从数据库中获取用户
  • 从DB中查找我想在此新闻稿中发送的文章
  • 运行所有收件人,通过$message=\Swift\u 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为例,在我取消脚本之前,控制台不会再做出反应。我已经试着在后台启动它,但似乎脚本根本不起作用。。。没有发生错误或类似的事情,只是没有反应

    编辑:还是使用特定的邮箱来发送所有这些邮件,而不是使用PHP和mail()函数(SwiftMailer中可能也使用了该函数)更好

    非常感谢你的帮助!
    Manuel

    我们有一个类似的场景,我们决定使用sonata通知包+RabbitMQ。您可以创建一个控制台命令来生成所有信息并将其发送到RabbitMQ,然后使用sonata bundle,您可以创建一个Consumer命令来管理队列以发送电子邮件组。

    如果您需要有关其配置的帮助,我们可以

    不同时执行包含500多封邮件的队列。当来自同一来源的邮件太多时,大多数邮件服务器都会拒绝传递邮件。我在Symfony 1.4中有一个项目,我们在十分钟内发送了500封邮件,效果很好。所以你在两次通话之间有延迟?但是你有1个cronjob或者很多cronjob,延迟10分钟?谢谢你,Imanol,我会尝试一下,然后返回到你的产品!