我正在使用Swiftmailer和Symfony发送电子邮件。我的配置设置为假脱机电子邮件,我正在使用第三方SMTP服务器(MailJet)。一切正常。 但如果我给Swiftmailer一个错误的SMTP服务器密码,它就会无声地失败。
当我关闭假脱机以便立即发送时,我看到Swiftmailer正在抛出一个TransportException。但是,当它被假脱机时,在Symfony的kernel.terminate
事件期间会抛出此异常,因此它会被忽略。 Symfony或nginx的日志中没有任何内容,所以我实际上并不知道是否抛出异常。
那么,如果在kernel.terminate
事件期间抛出SMTP服务器,我怎么能检测到连接到SMTP服务器的失败,以便我可以在Monolog中登录?
答案 0 :(得分:2)
你应该看看Swiftmailer plugins。有一堆来included with swift。
如果没有,您可以编写自己的插件/事件监听器。您可以查看logger插件的工作原理,通过实现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());