我有一个脚本,可以循环发送多封电子邮件。在每封电子邮件之间,我重置modMail:
$modx->mail->reset()
由于modMail需要再次连接到SMTP服务器,发送速度变得非常慢。我想在一个SMTP会话中发送所有电子邮件。
我发现PHPMailer有一个clearAllRecipients方法,但modMail类没有。所以下面的命令不起作用:
$modx->mail->clearAllRecipients()
使用以下命令直接调用PHPMailer的方法是否安全:
$modx->mail->mailer->clearAllRecipients()
我有点担心,如果PHPMailer发生变化,稍后会出现故障。或者什么是更好的解决方案?
PHPMailer的API不太可能以任何类似的方式改变,因为它会导致BC中断。按照你的建议做应该很好,但请记住,你还需要设置SMTPKeepAlive = true
才能做到这一点。请参阅PHPMailer邮件列表示例中的参考实现。
如果你认为其他modx用户会从中受益,你可以将其添加到他们提供的包装中(并提交PR(,这样你就可以从PHPMailer的内部API中抽象出来,从而避免未来的变化。