【问题标题】:Best way to send 10,000+ emails with PEAR/Mail_Queue使用 PEAR/Mail_Queue 发送 10,000 多封电子邮件的最佳方式
【发布时间】:2010-11-19 12:15:33
【问题描述】:

我有一个 cron 可以生成整个邮件信息,并使用 $mail_queue->put(.....) 将其放入数据库表中,并且可以选择在发送后删除电子邮件。

这里是我需要一点帮助的地方:在获得上述信息后,发送电子邮件的最佳方式是什么?立即运行 $mail_queue->sendMailsInQueue(),使用其他 cron 作业或其他方式?

顺便说一下,服务器限制是 100 封电子邮件/分钟。目前Mail_Queue 的最后一个 csv 差异未应用(目前正在使用支持),所以我不能使用“延迟”选项。

我有一个想法,使用$seconds_to_send 选项,但它是根据create_time 字段计算的,帮助不大,但也是一个选项。

非常感谢任何想法和建议。

【问题讨论】:

  • @Kokos:批量发送电子邮件有很多正当理由。如果他是从头开始编写一个新的电子邮件系统,而不是使用垃圾邮件发送者已经使用的众多现成系统中的一个,我敢打赌,它服务于合理的商业目的。
  • 不 - 我们需要这个系统来更好地处理自定义时事通讯、警报和注册电子邮件
  • 我只想说,并不是每个人都有向人们发送垃圾邮件的使命。我自己也在做类似的事情,当你在一个句子中使用“mass”和“mail”这两个词时,你会得到什么负面评论,这很烦人。不是每个人都试图向世界发送垃圾邮件。

标签: php email pear mailing-list mail-queue


【解决方案1】:

就个人而言,我会采用 cron 方式,因为它减少了失败的机会。假设您的邮件服务器停止响应或由于某些其他原因变得不可用。或者,如果您的整个网络离线几个小时,但服务器仍在生成电子邮件,该怎么办。我说使用队列。

至于延迟的事情,只需让服务/cronjob 每 60 秒接收一次队列,弹出 100 封电子邮件并发送它们,然后退出。您可能会收到要发送的电子邮件队列,但无论您选择哪种系统,这都会发生。无论如何,在非高峰时间队列将清空。

【讨论】:

  • 是的,队列很好,但是如果您的整个网络离线几个小时,而您仍在将电子邮件推送到队列中,那么您的邮件服务器就会出现问题(100/分钟没关系,但对于任何类型的 mass 邮件来说,这都太慢了 - 50K 封电子邮件需要半天时间)。是的,磁盘空间很便宜——类似的事件告诉我们,300 GB 的可用空间是不够的。换句话说,如果你在一个洞里,停止挖掘!你是发送邮件的人,当你离线时他们不会去任何地方。
【解决方案2】:

使用两个脚本。一个用于使用您需要发送的电子邮件填充您的 mail_queue 表,第二个脚本以一次 90 封邮件的形式发送这些电子邮件。将第二个脚本设置为大约每 2 分钟左右激活一次。

您也可以升级您的托管计划;-)

【讨论】:

    【解决方案3】:

    为什么你不循环浏览 100 封电子邮件并睡 60 秒。这不会花费您任何服务器时间,唯一的缺点是您的脚本运行时间更长。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 2011-02-18
      • 1970-01-01
      • 2018-06-10
      • 2011-02-08
      • 2014-10-30
      • 2013-04-28
      • 2016-02-28
      • 1970-01-01
      相关资源
      最近更新 更多