Php 想使用swift mailer为大约18000名电子邮件收件人开发一个新闻稿发送系统吗

Php 想使用swift mailer为大约18000名电子邮件收件人开发一个新闻稿发送系统吗,php,cron,newsletter,swiftmailer,Php,Cron,Newsletter,Swiftmailer,我想开发一个通讯发送系统使用Swiftmailer。我想知道: 1) 我需要为此设置cron作业吗 2) Batchsend()或带有循环的Send(),哪一个更好(我希望每个地址都在to字段中)?关于第一个问题;最好创建脚本,从收件人列表中发送下一封x封电子邮件,并重复调用它,直到所有收件人都处理完毕。您需要跟踪谁在数据库中被处理,并在失败时引入错误处理;一个好的策略适用于每个用户: 在数据库中标记为正在处理 发送收件人电子邮件 在db中标记为已处理 通过这种方式,您可以看到最终有多少人失

我想开发一个通讯发送系统使用Swiftmailer。我想知道:

1) 我需要为此设置cron作业吗


2)
Batchsend()
或带有
循环的
Send()
,哪一个更好(我希望每个地址都在to字段中)?

关于第一个问题;最好创建脚本,从收件人列表中发送下一封x封电子邮件,并重复调用它,直到所有收件人都处理完毕。您需要跟踪谁在数据库中被处理,并在失败时引入错误处理;一个好的策略适用于每个用户:

  • 在数据库中标记为正在处理
  • 发送收件人电子邮件
  • 在db中标记为已处理
通过这种方式,您可以看到最终有多少人失败(即那些仍被标记为“处理”的人)

为了重复这个过程,您可以使用CRON并每分钟重复一次;但是,如果发送时间超过1分钟(例如,由于SMTP连接速度较慢),那么您将有两个进程同时运行,因此您需要防止这种情况发生,或者引入某种锁定(上面将用户标记为“正在处理”的示例将阻止脚本的两个并发实例处理同一个人)

CRON每分钟的另一个问题是,发送所有电子邮件可能要花很长时间。我遇到了这个问题,所以我编写了Fat控制器,为您处理并行处理和重复。我制作了一个简单的shell脚本,它每天由CRON启动,运行Fat控制器,然后运行PHP发送脚本的许多实例。以下是一些用例和更多信息:


关于你的第二个问题;我不确定Swift mailer的内部结构,但您需要打开SMTP连接,发送电子邮件,然后关闭它-因此您不会打开和关闭每封电子邮件的连接。查看文档,我以前使用过Swift,它工作得很好,文档非常清晰。

我知道,但可能有用:

您是否考虑过使用电子邮件时事通讯提供商,如?这显然是有成本的,但您必须将其与自己开发、运行和维护的成本进行比较

如果你的一些用户认为你的邮件是垃圾邮件,这是肯定会发生的,不管你有多彻底地获得同意,那么你很容易进入黑名单,这将严重阻碍你的邮件。大型供应商不太可能被列入黑名单,因为他们是公认的合法的群发邮件者。他们还将负责退订管理


编辑:我和MailChimp没有任何关系。这正是我使用过的一个。

send()
是首选。实际上,
batchSend()
。构建一个循环并手动发送它们

我对ERP应用程序中的通知做了类似的事情,基本上是定制电子邮件

我这样做的方式是使用Gearman,将所有要发送的电子邮件排队,然后让Gearman工作人员来实际发送。这样,您可以让多个工作人员发送电子邮件,而前端不会在等待发送每封电子邮件时锁定