用PHP发送大量电子邮件的最佳方式

时间:2012-09-28 08:27:01

标签: php email newsletter

我有大量用户同意收听每日简报。正在自动生成简报的内容,因此唯一要做的就是设置一个发送电子邮件的cron作业。

但是,如果有例如10.000用户,这样的cron作业会杀死我的服务器。可以做些什么来解决这个问题?

发送100封电子邮件后是否睡眠(1)? (当然,将执行时间限制设为1天)

2 个答案:

答案 0 :(得分:4)

查看http://php.net/manual/en/function.mail.php

  

注意:

     

值得注意的是mail()函数不适合更大的   循环中的电子邮件量。此功能可打开和关闭SMTP   每个电子邮件的套接字,效率不高。

     

要发送大量电子邮件,请参阅»PEAR :: Mail和»   PEAR :: Mail_Queue包。

因此,只需使用Mail_Queue包...它会接收每封邮件,然后直接通过它们。

答案 1 :(得分:2)

几个月前我已经建立了一个系统来发送项目电子邮件,所以我做了以下几点:

在数据库中,我有3个表:

用户
user_emails(一些用户有多封电子邮件)
email_campaign(这是我在发送广告系列时暂时存储数据的表格,在结束时我会截断其中的所有内容)

当我开始发送广告系列时,我会在email_campaign表格中为每个完成发送电子邮件的用户插入行。
这样,如果在广告系列完成之前发生错误,我知道在哪里继续,并知道我向谁发送了电子邮件以及谁需要发送电子邮件。

实践我能够在2小时内发送45.000封电子邮件。没有服务器过载 我每100封电子邮件就像你想做的那样使用sleep() 另外,当我的服务器负载最低时,我会在凌晨2点发送广告系列。

您还可以将电子邮件服务器配置为每小时发送一定数量的电子邮件 这会减慢发送速度,但会减少服务器负载。