我正在使用 Swiftmailer 和 Symfony 发送电子邮件。我的配置设置为后台处理电子邮件,我使用的是第三方 SMTP 服务器 (MailJet)。一切正常。 但是如果我给 Swiftmailer 一个错误的 SMTP 服务器密码,它只会默默地失败。
当我关闭假脱机以便立即发送时,我看到 Swiftmailer 正在抛出 TransportException。然而,当它被假脱机时,这个异常会在 Symfony 的 kernel.terminate
事件期间抛出,所以它会被忽略。 Symfony 或 nginx 的日志中都没有任何内容,所以我实际上不知道是否抛出了异常。
那么,如果在 kernel.terminate
事件期间抛出连接到 SMTP 服务器的失败,我如何检测连接到 SMTP 服务器的失败,以便我可以将其记录在 Monolog 中?
最佳答案
你应该看看 Swiftmailer plugins 。有一堆来自 included with swift 。
也许 logger 插件或 reporter 插件对你来说就足够了。
如果没有,您可以编写自己的插件/事件监听器。您可以查看记录器插件的工作原理,它通过实现 transport exception listener 来监听异常。
像这样的东西:
class CustomPlugin implements Swift_Events_TransportExceptionListener
{
public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt)
{
$e = $evt->getException();
// do something ...
}
}
然后你可以像这样注册你的插件:
$mailer->registerPlugin(new CustomPlugin());
关于symfony - 使用 Symfony2 和 Swiftmailer,当实际发送假脱机电子邮件时,我如何监听抛出的异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21171080/