如何使用php mail()函数而不会崩溃服务器?

时间:2010-10-10 19:38:25

标签: php email

我想用php发送一些批量电子邮件。我在过去使用了一个foreach循环,我在其中使用了php mail()函数。但是,当发送大量电子邮件时,通常会备份并崩溃服务器。如何在不压倒系统的情况下做到这一点?

2 个答案:

答案 0 :(得分:3)

请勿使用mail()功能进行群发电子邮件发送。 (我认为它甚至在手册中说明了。)该函数为每个邮件打开一个新的smtp连接,这是非常无效的。更好地使用SMTP客户端,它可以为您的所有电子邮件重复使用相同的连接。

你会在谷歌上找到很多图书馆。 first result对我来说是一个完整的MTA,可能很有趣,因为你可以用它做更准确的统计数据。如果您不想尝试,可以随时使用PEAR课程,Mail就是您所需要的。

编辑:刚查过手册。有关于群发电子邮件的说明:

  

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

     

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

答案 1 :(得分:0)

这取决于你发送的内容。如果您要发送简报或类似内容,我会调查SendgridMailchimp等服务。

如果您要发送其他类型的电子邮件,我建议您使用Messaging Queue并为每封需要发送的电子邮件创建1个作业,并让连接到您的消息队列的工作人员完成工作。

这样,如果要发送大量电子邮件,您可以添加更多工作人员来更快地清空邮件队列。您可能希望查看的一些Message Queue解决方案是beanstalkdRabbitMQResque(已将其移植到PHP)。