如何在 PHPMailer 中启用持久的 SMTP 连接?
我将发送很多邮件,使用持久连接可能会提高性能。
如何在 PHPMailer 中启用持久的 SMTP 连接?
我将发送很多邮件,使用持久连接可能会提高性能。
我们并不关心你的服务器是否被列入黑名单,对吧?要达到你想要的效果,只需将SMTPKeepAlive
属性设置为true
,然后在批量发送完成后隐式调用SmtpClose()
方法即可。
$phpMailer = New PHPMailer();
$phpMailer->isSMTP();
$phpMailer->SMTPKeepAlive = true;
for ( ... ) {
// Send your emails right away
[ ... ]
}
$phpMailer->SmtpClose();
什么是持久的SMTP连接?
首先,如果您发送电子邮件,则在完成作业之前与服务器保持连接。 其次,如果您想要发送多封电子邮件(可能会将您的服务器列入黑名单), 您可以在PHP代码中编写一个循环,获取所有电子邮件地址并将它们传递给phpmailer,最终发送它们。 这就是我发送大量邮件的方式。
当您发送大量邮件并希望更快地发送时,持久的SMTP连接是合适的选择。保持SMTP连接活动状态以发送特定数量的电子邮件是一个好主意,可以加快发送速度。在IP预热会话期间,经常在循环中交替使用SMTP连接可以实现更可控的发送方式。
https://www.mumara.com/persistent-smtp-connection-and-non-persistent-loop/
$phpMailer->SMTPKeepAlive = true
的作用是避免在下一封邮件发送前关闭连接,但服务器可能仍会关闭连接,这是无法改变的。如果您需要更快地发送电子邮件,建议您使用基于API的电子邮件平台,如Mandrill或Mailgun,在单个请求中可以发送数百封电子邮件。但如果您想发送垃圾邮件,请忘记我曾经帮助过您,回到您的房间反思自己的行为。 - MauroAddAddress()
之前,在循环内务必调用ClearAddresses()
。请参见:https://dev59.com/w3XYa4cB1Zd3GeqP-Mho#18285896。 - degenerate