BCC是否以不同于TOs的方式将PHP mail()发送到邮件列表?

时间:2011-02-24 13:09:29

标签: php mailing-list bcc

我正在改进PHP邮件列表代码,它在循环中使用mail(),同时迭代所有订阅者。该脚本用于显示“超出30秒的最长执行时间”错误,我通过添加set_time_limit(0);解决了该错误。

现在没有错误,但发送100条消息大约需要7分钟。我有什么选择?

只会在BCC帮助中向所有订阅者发送一条消息,或者“幕后”是否相同?

5 个答案:

答案 0 :(得分:1)

通过在BCC shouold中指定它们来发送给所有订阅者的工作更快。虽然对于某些私人环境来说它可能是一个不错的选择,但我不建议在公共网页/系统中这样做,因为许多人可能认为这种电子邮件是垃圾邮件。

一种选择是通过cron作业发送电子邮件。在这种情况下,只要最终发送所有电子邮件,发送电子邮件所需的时间并不重要。

答案 1 :(得分:1)

作为BCC发送给所有人将更快批次。代码执行速度更快,mail()只执行一次。

这是快速修复,但如上所述,大型BCC列表是通往垃圾邮件文件夹的安全之路。但是,使用mail()也是垃圾邮件的确定目标。

如果您想要真正改进它,请使用PHPMailer from SourceForge并使用cron批量发送一次X电子邮件,然后通过SMTP发送(减少垃圾邮件点击次数)。

PHP文档声明:

  

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

     

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

答案 2 :(得分:0)

由于您只是在询问选项,因此以下是一些:

  • 描述您的代码,并查看为什么它的速度慢。也许你可以解决一些效率问题。
  • 通常不建议依赖mail()函数,尤其是因为存在更好的替代方法,如swiftmail或Zend_mail。虽然这些对于小型邮件要求可能有点过分
  • 它可能是服务器相关的问题吗?也许和您的服务器管理员联系。

答案 3 :(得分:0)

Cron Job更好主意。我用过这个,它有效...... 描述您的代码将帮助您找出问题。

答案 4 :(得分:0)

我建议通过BCC发送邮件,因为它会快得多。您的脚本只需要与SMTP服务器建立一个连接,此服务器将为您完成剩下的工作。

我还会看一下例如PHPMailer或PEAR :: Mail。 批量邮件的mail()方法的坏处是,它将为每个发送的电子邮件打开一个到SMTP服务器的新套接字。 一个好的邮件库会创建一个到SMTP服务器的套接字连接,然后发送所有电子邮件并在最后关闭它。

为了加快速度,您还可以查看SMTP服务器配置(如果可能)并尝试增加守护程序等。 您可能还需要考虑某些SMTP服务器具有可以发送的最大值。