我想用php发送一些批量电子邮件。我在过去使用了一个foreach循环,我在其中使用了php mail()函数。但是,当发送大量电子邮件时,通常会备份并崩溃服务器。如何在不压倒系统的情况下做到这一点?
答案 0 :(得分:3)
请勿使用mail()
功能进行群发电子邮件发送。 (我认为它甚至在手册中说明了。)该函数为每个邮件打开一个新的smtp连接,这是非常无效的。更好地使用SMTP客户端,它可以为您的所有电子邮件重复使用相同的连接。
你会在谷歌上找到很多图书馆。 first result对我来说是一个完整的MTA,可能很有趣,因为你可以用它做更准确的统计数据。如果您不想尝试,可以随时使用PEAR课程,Mail就是您所需要的。
编辑:刚查过手册。有关于群发电子邮件的说明:
值得注意的是mail()函数不适合更大的 循环中的电子邮件量。这个 功能打开和关闭SMTP 每个电子邮件的套接字,不是 非常有效率。
要发送大量电子邮件,请参阅»PEAR :: Mail和» PEAR :: Mail_Queue包。
答案 1 :(得分:0)
这取决于你发送的内容。如果您要发送简报或类似内容,我会调查Sendgrid或Mailchimp等服务。
如果您要发送其他类型的电子邮件,我建议您使用Messaging Queue并为每封需要发送的电子邮件创建1个作业,并让连接到您的消息队列的工作人员完成工作。
这样,如果要发送大量电子邮件,您可以添加更多工作人员来更快地清空邮件队列。您可能希望查看的一些Message Queue解决方案是beanstalkd,RabbitMQ,Resque(已将其移植到PHP)。