php mail()是群发邮件的好选择吗?

mul*_*axp 5 php mysql email massmail

我正在创建一个系统,其中会定期发送数千封电子邮件的列表,我知道mail()PHP 中的函数非常繁重,特别是如果同时调用它太多次.

我的系统工作方式大致是我在MySQL中创建电子邮件队列并使用25个批次发送它们mail(),从表中删除前25个发送的.我在每组25之间等待2秒.

这对服务器来说是否太费力了,或者我可以进一步推动它?可以说每秒50?或者有更好的方法可以在更短的时间内发送许多电子邮件,而不会牺牲服务器性能.

我有一个没有任何mail()通话限制的专用服务器.

Ant*_*ony 5

除了表现之外还有其他因素需要考虑,但简短的回答是:有更好的选择.亚马逊SES和MailChimp是我所知道的两个听到积极反馈的.

请看j08691关于性能的答案,但是mail()用于此目的的其他问题包括:

  1. 可伸缩性(你会碰到最终没有SMTP服务器可以处理的问题,而你已经在考虑它了)

  2. 完整性 - 在滚动自己的群发邮件时,您更有可能被标记为垃圾邮件,尤其是mail因为它使用本地sendmail设计.

  3. 成本/收益和投资回报率 - 可靠的群发邮件使其正确且具有竞争力.在某些时候,您每小时支付更少的费用来维护您的邮件服务器,当它崩溃,离开黑名单,手写电子邮件布局,一般保养等等,而不是您为群发邮件服务付费.

总的来说,最大的问题是你必须自己完成所有的工作,你可能会被标记为垃圾邮件,因为不支付能够每秒发送数百封电子邮件而不是每分钟发送数百封电子邮件的服务当PHP不忙于处理它为您的Web应用程序处理的所有其他内容时.

个人轶事(不是对SES的认可,只是群发邮件):我们有一个客户,每个广告系列发送了100k +电子邮件,每天至少有1-3个广告系列.他们开始抱怨客户在2天后收到有关"每日优惠"的电子邮件.这不是因为Mailer库很慢(即使这个app避免使用普通版mail),也不是因为它无法确保在电子邮件无关之前为每个广告系列发送所有电子邮件.我们将它们切换到SES(在我们的最后进行了一些优化,但并不多),他们可以在一小时内清除一个活动.