我正在使用php和mysql。
我将发送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 ++用户时会有任何问题吗?
您要发送的电子邮件数量是否有限制?
答案 0 :(得分:10)
注意:值得注意的是,mail()函数不适合循环中的大量电子邮件。此功能为每封电子邮件打开和关闭一个SMTP套接字,效率不高 要发送大量电子邮件,请参阅»PEAR :: Mail和»PEAR :: Mail_Queue包。
答案 1 :(得分:5)
电子邮件号码没有限制,但PHP脚本有时间限制。请参阅php.ini中的max_execution_time设置,通常为20或30秒。如果您不知道,请使用phpinfo()找出它。
此外,您应该采取一些措施来防止用户收到过多的电子邮件。您应该将它们标记为已发送,因此如果您不小心启动了两次脚本,它们就不会收到双重帖子。
除此之外,您应该注意到php的邮件功能本质上根本没有优化。您可以尝试一些库,例如phpmimemessage或任何其他库,这将允许您进行一些缓存,例如,许多其他功能。
答案 2 :(得分:2)
您应该构建一个发送/失败的电子邮件队列,这样您就可以尝试重新发送失败的尝试,并避免在出现问题时重新发送电子邮件。
不要创建一个试图通过邮件发送10k电子邮件的循环()
此外,您最有可能的限制将是您的ISP或主机的邮件服务器。
答案 3 :(得分:0)
您可以使用pear :: Mail_Queue http://pear.php.net/package/Mail_Queue/
它确实会做得很好。
答案 4 :(得分:0)
您可能还想查看设置“真实”邮件列表工具,例如mailman,或者至少使用别名组(如果可能)。
另外,请参阅有关serverfault的相关问题:https://serverfault.com/questions/67154/sending-an-email-to-about-10k-users-not-spam,其中提到PHPlist以及其他问题。在这里 - https://serverfault.com/questions/68357/whats-the-best-way-to-send-bulk-email。