【问题标题】:Persistent SMTP connection in PHPMailerPHPMailer 中的持久 SMTP 连接
【发布时间】:2011-01-20 23:50:51
【问题描述】:

如何在 PHPMailer 中启用持久 SMTP 连接?

我会发送很多电子邮件,因此通过持久连接可能会获得性能提升。

【问题讨论】:

    标签: php performance smtp phpmailer persistent-connection


    【解决方案1】:

    我们真的不在乎你的服务器是否被列入黑名单,对吧?这就是如何实现你想要的。只需将SMTPKeepAlive 属性设置为true,并在批量发送后,隐式调用SmtpClose() 方法。

    $phpMailer = New PHPMailer();
    $phpMailer->isSMTP();
    $phpMailer->SMTPKeepAlive = true;
    
    for ( ... ) {
        // Send your emails right away
        [ ... ]
    }
    
    $phpMailer->SmtpClose();
    

    【讨论】:

    • 非常感谢你,毛罗!这就是我一直在寻找的答案。
    • 嗨 Mauro 我使用了相同的代码 $phpMailer->SMTPKeepAlive = true。但并没有提高电子邮件发送速度。就我而言,这行代码不会改变性能。如果您有其他建议,请给我建议。
    • @maheshkajale, $phpMailer->SMTPKeepAlive = true 只会避免在第一封电子邮件上关闭连接,因此不必在下一封电子邮件中打开它。但是,服务器可能无论如何都会关闭连接,您无法更改它。如果您需要更快地发送电子邮件,我建议您使用基于 API 的电子邮件平台,例如 Mandrill 或 Mailgun,您可以在一个请求中触发数百封电子邮件。但是,如果您尝试发送垃圾邮件,请忘记我帮助过您,去您的房间看看您做了什么。
    • 这在通过脚本发送多封电子邮件时使用 Gmail 的 smtp 中继服务器(用于企业/教育帐户)可能会有所帮助。 - 来自 Google 的文档:“Google Apps SMTP 中继服务器具有防止拒绝服务 (DoS) 攻击的保护措施。为避免与这些保护措施发生冲突,通过 smtp-relay.google.com 发送大量邮件的 SMTP 代理应该重用连接,每个连接发送多条消息。这也称为连接缓存。"
    • 确保在调用AddAddress()之前在循环内调用ClearAddresses()。见:stackoverflow.com/a/18285896/482115
    【解决方案2】:

    通过优化电子邮件的发送,您可能会将自己暴露为垃圾邮件,从而导致网络服务器阻止您的 IP。

    您要发送多少封电子邮件?实际限制发送的电子邮件可能比加快速度更好。

    【讨论】:

    • 目前我正在发送 2500 封电子邮件。
    • 是的,我同意限制。限制为每小时 500-1000 应该避免任何被视为垃圾邮件的可能性
    【解决方案3】:

    持久 SMTP 连接是什么意思?

    首先如果您发送电子邮件,您将连接到服务器,直到它完成工作。 其次如果您要发送大量电子邮件(可能您的服务器会在黑名单中), 您在 PHP 代码中编写了一个 loop,它会获取所有电子邮件地址并将它们传递给 phpmailer 并最终发送它们。 这就是我发送群发邮件的方式。

    【讨论】:

    • 但是我需要在 PHPMailer 的某个地方启用它,因为它可以在发送的每封电子邮件上连接和断开连接
    • 我的服务器被识别并且(几乎)有必要的东西不要被列入黑名单。我们定期发送电子邮件并拥有庞大的客户群,这种规律性也使我们在接收服务器中排名靠前。
    • 您可能应该设置一个队列并使用循环一次处理一批,以便您可以限制电子邮件的数量
    【解决方案4】:

    持久 SMTP 连接适用于批量发送并希望发送速度更快的情况,保持 SMTP 连接有效以发送特定数量的电子邮件是个好主意,这样可以加快发送速度。循环内频繁交替的 SMTP 连接可能是在 IP 预热会话期间更受控的发送方式。 https://www.mumara.com/persistent-smtp-connection-and-non-persistent-loop/

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2015-08-09
      • 2012-04-22
      • 2017-10-15
      • 2016-11-10
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多