PHPMailer中的持久SMTP连接

Pau*_*ica 11 php performance smtp phpmailer persistent-connection

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

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

Mau*_*uro 18

如果您的服务器被列入黑名单,我们真的不在乎,对吧?这是如何实现你想要的.只需设定trueSMTPKeepAlive属性和批量发送后,隐式调用SmtpClose()方法.

$phpMailer = New PHPMailer();
$phpMailer->isSMTP();
$phpMailer->SMTPKeepAlive = true;

for ( ... ) {
    // Send your emails right away
    [ ... ]
}

$phpMailer->SmtpClose();
Run Code Online (Sandbox Code Playgroud)

  • 当使用 Gmail 的 smtp 中继服务器(用于企业/教育帐户)通过脚本发送多封电子邮件时,这可能会很有帮助。- 来自 Google 的文档:“Google Apps SMTP 中继服务器具有防止拒绝服务 (DoS) 攻击的保护措施。为了避免与这些保护措施发生冲突,通过 smtp-relay.google.com 发送大量邮件的 SMTP 代理应该重用连接,每个连接发送多条消息。这也称为连接缓存。” (3认同)
  • 在调用`AddAddress()`之前,一定要在循环中调用`ClearAddresses()`.请参阅:http://stackoverflow.com/a/18285896/482115 (3认同)
  • @maheshkajale,`$phpMailer->SMTPKeepAlive = true` 只会避免关闭第一封电子邮件的连接,因此不必在下一封电子邮件中打开它。但是,服务器可能会关闭连接,您无法更改它。如果您需要更快地发送电子邮件,我建议您使用基于 API 的电子邮件平台,例如 Mandrill 或 Mailgun,您可以在单个请求中发送数百封电子邮件。但是,如果您正在尝试做垃圾邮件,请忘记我帮助过您,去您的房间看看您所做的事情。 (2认同)