在循环中发送大量电子邮件

时间:2011-02-28 13:04:14

标签: php email pear mail-queue

我有一个发送大量电子邮件报告的系统(每天大约500多封电子邮件)。我不是垃圾邮件发送者:)它不是真的很大的电子邮件,但它们是循环发送我经常得到这个错误“PHP警告:邮件():无法执行邮件传递程序”。我知道这个问题有PEAR :: Mail_Queue包。但是,如果那个软件包真的很有用,或者我需要寻找其他东西,请你告诉我。非常感谢

4 个答案:

答案 0 :(得分:2)

您可以使用PEAR's Mail_Queue package直接通过SMTP服务器发送邮件 - 它也可以在后台运行,因此不会延迟或增加脚本执行时间。

使用Mail_Queue包的另一个好处是,您可以检索为记录目的而发送的每封邮件的esmtp id - 我不知道Zeta Mail组件或任何其他组件是否可以这样做。

我开发了许多面向公众,仅限内部网的解决方案,使用此组件并且没有遇到任何重大问题。

答案 1 :(得分:1)

  

“PHP警告:mail():无法执行邮件传递程序”

......意味着它在锡上的含义。 PHP只会将电子邮件发送到Linux / Unix / POSIX系统上的外部程序(由php.ini中的sendmail_path定义)。并且在某些情况下会返回错误。这不是PHP代码中的错误。

除非您的MTA配置非常糟糕,否则将无法使用SMTP连接解决问题。

您需要查看来自MTA的日志,以查看其未能发送邮件的原因 - 或者将邮件可执行文件包装在日志记录脚本中。

答案 2 :(得分:0)

你必须在邮件之间使用sleep()来解决这个问题。

答案 3 :(得分:0)

另一种方法也可以是直接通过SMTP服务器发送邮件。这样可以节省您通过shell调用sendmail(或使用任何MTA)的往返程序,以便传递邮件。例如,Zeta Mail component允许您直接通过SMTP服务器发送邮件,而不需要特殊的扩展名。