在php中自动发送批量电子邮件

时间:2010-10-11 16:16:13

标签: php

前几天我收到了客户的订单,他让我写了一个脚本,可以在提交网站时给网站上的文章发送电子邮件

他问的第四件事就是向所有用户发送电子邮件,这种方式对他的服务器没有任何问题,因为他有很多用户

现在好了制作这个脚本我应该计划编写一个电子邮件脚本,可以在作者提交新闻后向所有用户发送文章。

  • 此脚本应该使电子邮件不会使服务器关闭

  • 它应该适用于后台和自动

这个脚本的好例子可以是phpbb3组邮件部分

我用谷歌搜索找到一些有用的脚本,任何可以提供帮助的php类

你的建议是什么?如果这个命令发给你,你会怎么写?

3 个答案:

答案 0 :(得分:1)

使用cron。

您可以每5或10分钟运行一次cron作业,一次只发送一小部分电子邮件。这样它就可以在后台运行,不会抨击SMTP服务器。

cron脚本应该使用经过良好测试的类,例如PHP MailerSwiftMailer。创建一个交叉引用表,用于跟踪哪些地址已通过电子邮件发送到哪些文章。

答案 1 :(得分:0)

您需要发送多少封电子邮件?

我建议每个域限制自己。我首先按域对所有电子邮件地址进行排序,然后创建一种机制,以便在发送时从每个域中进行选择。保持计时器并且不超过该计数非常重要。根据我的经验,如果你能在合理的时间内以这种方式完成你的工作,我不建议每小时超过500个大型域名(雅虎,谷歌......)。当我在一家产品注册公司工作时,如果我们因大型广告系列每小时发送了很多电子邮件,那么较大的域名会让我们失望。

另一个相关问题是您需要什么级别的可靠性?你只是设置一个脚本来发布这些电子邮件,你不关心会发生什么,或者你真的喜欢一个解释错误信息的邮件服务器(并根据这个采取相关的后续行动)?

作为一般说明,请务必确保有某种方法可以选择退出这些电子邮件。除非你这样做,否则你可能是非法的,你会看起来像垃圾邮件一样。还有一些垃圾邮件检查脚本可以使用(不幸的是,我不记得名字)。

我在一个系统上工作,以每15分钟的增量可视化我们的邮件服务器的健康状况。这涉及解析我们的邮件服务器日志。这种可视化帮助我们的团队决定何时需要调用雅虎并向他们解释我们不是垃圾邮件发送者。如果您想更详细地谈论这些概念,请给我发消息(Google我的名字)。

祝你好运!

-Brian J. Stinar -

答案 2 :(得分:0)

  

这个脚本不应该将电子邮件写入   使服务器停止

  • 首先安装一个消息队列,例如redis(有阻塞弹出),beanstalkd,gearmand。您可以在使用消息队列时限制速率。

  • 然后从客户端向队列添加消息。

例如使用redis

lpush email $youremail
  

它应该适用于背景和   autumatically

  • 让deamon处理这些邮件并批量发送电子邮件,例如swiftmailer

    1. 创建一个名为email.php的php cli文件,例如

    2. 内部文件使用redis例如

      blpop email

    3. 启动php email.php作为守护。