2009-10-09 77 views
5

我使用的是php和mysql。使用php邮件功能有没有限制?

我打算发送10k ++(10万以上)的电子邮件来更新我的订阅者,这是我第一次发送它们。我将使用PHP的邮件功能,基本上这里是我会做:

首先从数据库中获取的数据:

Select name, email FROM data 

之后,使用while循环发送数据:

while($r = mysql_fetch_assoc($exe)){ 
    ... 
    if($mail){ 
     echo "success<br>"; 
    } else { 
     echo "failed<br>"; 
    } 
} 
echo "Sent all"; 

我包含if .. else语句,以确保每封电子邮件都能成功发送。有什么我需要照顾的吗?发送给10K ++用户时会有什么问题吗?

您将要发送的电子邮件数量是否有限制?

+1

相关 - http://stackoverflow.com/questions/788596/whats-the-best-approach-to-sending-email-to-hundreds-of-recipients-from-a-zend-f – warren 2009-10-09 11:46:33

回答

4

电子邮件数量没有限制,但是PHP脚本有时间限制。请参阅php.ini中设置的max_execution_time,通常为20或30秒。如果你不知道,使用phpinfo()来找出它。

此外,您应该采取一些措施来防止用户收到太多的电子邮件。你应该将它们标记为已发送,所以如果你不小心启动脚本两次,它们不会收到双重帖子。

除此之外,你应该注意到,php的邮件功能本质上没有被优化。您可以尝试一些库,例如phpmimemessage或其他任何库,这会允许您执行一些缓存操作,例如其他许多功能。

+0

Omg,I不知道。那么,您通常使用“phpmimemessage”发送10k ++电子邮件?你正在使用哪个库? – bbtang 2009-10-09 11:11:46

+0

我做了更复杂的事情,但是,我正在使用这个库来做群发邮件(通讯)。 Mimemessage现在已经很老了,现在有更好的图书馆,看到其他答案,或谷歌为他们。我的脚本在CLI的后台运行,但没有时间限制。 – Palantir 2009-10-09 11:19:48

9

请注意本说明从mail documentation

注:值得注意的是,邮件()函数是在循环不适合较大的电子邮件数量。此功能为每封电子邮件打开和关闭SMTP套接字,效率不高。
要发送大量电子邮件,请参阅»PEAR :: Mail和»PEAR :: Mail_Queue软件包。

+0

你使用什么库发送电子邮件?梨::邮件??我将研究那些东西。谢谢 – bbtang 2009-10-09 11:12:35

+0

使用pear :: Mail_Queue,而不是邮件 – 2009-10-09 11:17:14

2

您应该建立一个发送/失败的电子邮件队列,以便您可以尝试重新发送失败的尝试,并避免在发生错误时重新发送电子邮件。

不要创建尝试通过邮件发送电子邮件10K的循环()

而且,最有可能的限制,你会打将是您的ISP或主机的邮件服务器。