群发邮件php

时间:2012-10-16 07:18:53

标签: php email smtp massmail

我有一个包含534封注册电子邮件的小型数据库(简报)。

我知道如何从我的数据库向所有电子邮件地址发送电子邮件,但问题在于托管页面的限制。我限制为每小时200封电子邮件,如果我强行发送到所有地址,我可能会被禁止。

一开始我曾经用循环发送(for()和foreach()),我选择了所有的电子邮件,而不是用smtp发送消息。

昨天我正在检查我的通知,我看到网络托管公司的警告窗口,我可能会被禁止,因为我试图在不到1小时内发送超过500封电子邮件!

我该怎么办?

5 个答案:

答案 0 :(得分:1)

如果您使用mail()(我无法在没有代码的情况下告诉),那么请从php.net上阅读...

  

注意:

     

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

     

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

梨子在我的书中并不好玩。我倾向于同意this post使用类似SwiftMailer

的内容

答案 1 :(得分:1)

您可以通过一次通话发送多封电子邮件,例如

CC = "emailaddress1@xxxx.com; emailaddress2@xxxxx.com"。  BCC = "Firstemailaddress; secondemailaddress"

但它也有一个限制。

答案 2 :(得分:1)

您可以每小时运行一次脚本,并在select语句中将limit值更改为在您的范围内工作,您可以将这些值保存在数据库中,并在完成后将其设置为0 ,或甚至在创建的简单文件中,然后在所有电子邮件循环后重置。

答案 3 :(得分:1)

以下步骤会有所帮助。

  1. 首先在表格中添加一个引用作为状态标记,以确定是否将电子邮件发送给该特定客户。你可以使用布尔值。
  2. 将电子邮件发送脚本编写为仅运行200循环,您应该获取电子邮件尚未发送的200个电子邮件地址。 (不发送标志的地方)
  3. 在循环内部,在向每个用户发送电子邮件时,将其标志更新为数据库中的发送。
  4. 完成上述脚本之后,您只需设置一个可以每小时执行一次的cronjob并在其中调用您的php脚本。

    希望这会有所帮助。

答案 4 :(得分:0)

我们为网络应用程序使用外部电子邮件系统。我个人推荐SendGrid,它处理扩展并提供一些非常有用的分析(非常便于追踪不良地址)。