【问题标题】:Does BCC send PHP mail() to a mailing list differently than TOs?BCC 是否将 PHP mail() 发送到不同于 TO 的邮件列表?
【发布时间】:2011-07-03 13:40:18
【问题描述】:

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

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

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

【问题讨论】:

  • PHP 可能是用于群发邮件应用程序的错误工具。
  • 更好地使用 cron 作业在 php 中发送群发邮件

标签: php mailing-list bcc


【解决方案1】:

由于您只是询问选项,因此这里有一些:

  • 分析您的代码,看看为什么它很慢。也许您可以解决一些效率问题。
  • 依赖mail() 函数通常是不可取的,特别是因为存在更好的替代品如swiftmail 或Zend_mail。虽然这些对于小型邮寄要求来说可能有点过分了
  • 这可能是与服务器相关的问题吗?不妨与您的服务器管理员谈谈。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 它会工作得更快......更快。一个包含 500 个电子邮件地址和单个电子邮件正文的请求比包含 1 个完整电子邮件的 500 个请求快得多。
    【解决方案3】:

    以密件抄送方式发送给所有人会更快很多。代码将执行得更快,mail() 只会执行一次。

    这是快速修复,但如前所述,大型密件抄送列表是通往垃圾邮件文件夹的安全途径。但是,使用mail() 也肯定是垃圾邮件的目的地。

    如果您想真正改进它,请使用 PHPMailer from SourceForge 并使用 cron 一次通过 SMTP(更少的垃圾邮件命中)发送 X 封电子邮件。

    PHP 文档状态:

    注意:
    值得注意的是,mail() 函数不适合循环处理大量电子邮件。该函数为每封邮件打开和关闭一个 SMTP 套接字,效率不高。

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

    【讨论】:

    • 使用mail()和“phpMailer via SMTP”将电子邮件传输到邮件服务器有什么区别? mail() 最终不会使用相同的 SMTP 吗? :)
    • 不一定相同 smtp。通常邮件使用本地邮件服务器,除非您可以访问 php.ini 并更改它。使用 pear 或 phpmailer 等库,您可以使用例如 google 的 smtp。这与协议无关,而是因为本地未知服务器被垃圾邮件过滤器视为不安全。
    • @binaryLV: phpMailer 知道正确的 SMTP 标头用于“看起来像”真正的电子邮件,而有人使用 mail() 手工制作他们的邮件并且没有特别的专业知识最终会生成一个相当垃圾邮件过滤器会挑选出的简单电子邮件。事实上,这种垃圾邮件过滤器主要是为这种情况而设计的——为那些进行快速、简单、廉价的群发邮件的人设计的。
    【解决方案4】:

    Cron Job 是更好的主意。我用过这个,它工作... 您编写的概要文件将帮助您找出问题所在。

    【讨论】:

      【解决方案5】:

      我确实建议通过密件抄送发送邮件,因为这样会快很多。您的脚本只需与 SMTP 服务器建立一个连接,该服务器将为您完成其余的工作。

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

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

      【讨论】:

        猜你喜欢
        • 2012-10-18
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 2020-10-30
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        相关资源
        最近更新 更多