抛开对垃圾营销的蔑视,我需要向客户发送大约15,000封电子邮件。我的同事试图通过php邮件循环发送它们,但很明显它很快被卡住了。有没有传统的(即通过PHP脚本)来快速完成这个?如果没有,你怎么建议我这样做(可能通过exec
)没有太多的开销?
谢谢!
答案 0 :(得分:4)
我已经使用PEAR的Mail_Queue一次排队200,000多封邮件。即使使用自定义内容,也可以轻松快速地填充数据库,然后一个相当简单的脚本每次发送大约250个 - 如果负载平均值不是太高。然后它循环并发送下一批。
你不会以通常可能的速度发送它们,但它会毫无问题地发送它。
tutorial几乎可以为您提供所需的一切 - 只需循环“send_messages.php”脚本(从命令行更好),直到数据库队列为空。
答案 1 :(得分:2)
您可以使用Gearman之类的内容来创建一个推荐的here队列系统。另一种选择是查看付费服务,例如Amazon's Simple Email Service (SES)
答案 2 :(得分:1)
无论您如何实施即时交付:这将是一个漫长的过程,总是会受到干扰,您无法负担重启交付并向5,000位客户发送两次相同的消息。
我相信一个可靠的系统必须使用队列。主脚本只是将收件人添加到队列中,然后您有一个辅助进程从队列中选择项目,发送它们并最终将它们标记为已发送。此辅助过程可以手动启动(可能从命令行)或通过cron选项卡启动。
我从未使用过,但我的书签中有这个:http://ledscripts.com/free/php/phpledmailer
答案 3 :(得分:0)
您是通过CGI运行还是作为命令行上的脚本运行?最好在命令行上将其作为脚本运行。
如果你说它卡住了,试试运行set_time_limit(0);
以避免PHP退出执行过长。