我想使用Swiftmailer开发一个简报发送系统。我想知道:
1)我是否需要为此设置一个cron作业?
2)Batchsend()
或Send()
loop
,哪一个更好(我希望每个地址都在To字段中)?
答案 0 :(得分:0)
关于第一个问题;最好创建脚本以从收件人列表中发送下一个x电子邮件,并重复调用它,直到所有收件人都已处理完毕。您需要跟踪数据库中的处理对象,并在出现故障时引入错误处理;每个用户都有一个好的策略:
通过这种方式,您可以看到最后有多少人失败了(即那些仍被标记为“处理”的人)。
为了重复这个过程,您可以使用CRON并每分钟重复一次;但是如果发送超过1分钟(例如由于SMTP连接速度慢),那么你将有两个进程一起运行,所以你需要防止这种情况或引入某种锁定(上面的例子将用户标记为“处理“将阻止脚本的两个并发实例处理同一个人。”
每分钟CRON的另一个问题是发送所有电子邮件可能需要很长时间。我有这个确切的问题所以我写了Fat控制器处理并行处理并为您重复。我创建了一个简单的shell脚本,它每天都由CRON启动并运行Fat Controller,然后运行PHP发送脚本的许多实例。以下是一些用例和更多信息:
http://fat-controller.sourceforge.net/use-cases.html
关于你的第二个问题;我不确定Swift邮件程序的内部,但你想要打开一个SMTP连接,发送电子邮件,然后关闭它 - 所以你不打开和关闭每个电子邮件的连接。检查文档,我之前使用过Swift,它运行得非常好并且有非常清晰的文档。
答案 1 :(得分:0)
关闭主题我知道,但可能有用:
您是否考虑使用http://mailchimp.com/等电子邮件简报提供商?显而易见的是成本,但你必须将其与自己开发和运行它的成本进行比较,然后进行维护。
如果您的一些用户认为您的邮件是垃圾邮件,但无论您获得的同意程度如何,您都可以轻松进入黑名单,这会严重阻碍您的邮件。大型提供商被列入黑名单的可能性要小得多,因为他们是公认的合法群发邮件。他们还将负责取消订阅管理。
编辑:我与MailChimp没有任何关系。这只是我用过的那个。
答案 2 :(得分:0)
send()
是首选。事实上,batchSend()
has been removed。构造一个循环并手动发送它们。
答案 3 :(得分:0)
我对ERP应用程序中的通知做了类似的事情,基本上是定制的电子邮件。
我这样做的方法是使用Gearman,并将所有要发送的电子邮件排队,然后让Gearman工作人员进行实际发送。这样,您可以让多个工作人员发送电子邮件,并且前端不会锁定等待每封电子邮件发送。