【发布时间】:2011-01-20 23:50:51
【问题描述】:
如何在 PHPMailer 中启用持久 SMTP 连接?
我会发送很多电子邮件,因此通过持久连接可能会获得性能提升。
【问题讨论】:
标签: php performance smtp phpmailer persistent-connection
如何在 PHPMailer 中启用持久 SMTP 连接?
我会发送很多电子邮件,因此通过持久连接可能会获得性能提升。
【问题讨论】:
标签: php performance smtp phpmailer persistent-connection
我们真的不在乎你的服务器是否被列入黑名单,对吧?这就是如何实现你想要的。只需将SMTPKeepAlive 属性设置为true,并在批量发送后,隐式调用SmtpClose() 方法。
$phpMailer = New PHPMailer();
$phpMailer->isSMTP();
$phpMailer->SMTPKeepAlive = true;
for ( ... ) {
// Send your emails right away
[ ... ]
}
$phpMailer->SmtpClose();
【讨论】:
$phpMailer->SMTPKeepAlive = true 只会避免在第一封电子邮件上关闭连接,因此不必在下一封电子邮件中打开它。但是,服务器可能无论如何都会关闭连接,您无法更改它。如果您需要更快地发送电子邮件,我建议您使用基于 API 的电子邮件平台,例如 Mandrill 或 Mailgun,您可以在一个请求中触发数百封电子邮件。但是,如果您尝试发送垃圾邮件,请忘记我帮助过您,去您的房间看看您做了什么。
AddAddress()之前在循环内调用ClearAddresses()。见:stackoverflow.com/a/18285896/482115
通过优化电子邮件的发送,您可能会将自己暴露为垃圾邮件,从而导致网络服务器阻止您的 IP。
您要发送多少封电子邮件?实际限制发送的电子邮件可能比加快速度更好。
【讨论】:
持久 SMTP 连接是什么意思?
首先如果您发送电子邮件,您将连接到服务器,直到它完成工作。 其次如果您要发送大量电子邮件(可能您的服务器会在黑名单中), 您在 PHP 代码中编写了一个 loop,它会获取所有电子邮件地址并将它们传递给 phpmailer 并最终发送它们。 这就是我发送群发邮件的方式。
【讨论】:
持久 SMTP 连接适用于批量发送并希望发送速度更快的情况,保持 SMTP 连接有效以发送特定数量的电子邮件是个好主意,这样可以加快发送速度。循环内频繁交替的 SMTP 连接可能是在 IP 预热会话期间更受控的发送方式。 https://www.mumara.com/persistent-smtp-connection-and-non-persistent-loop/
【讨论】: