【问题标题】:With Symfony2 and Swiftmailer, how do I listen for exceptions thrown when spooled emails are actually sent?使用 Symfony2 和 Swiftmailer,我如何监听实际发送假脱机电子邮件时引发的异常?
【发布时间】:2014-02-05 21:48:36
【问题描述】:

我正在使用 Swiftmailer 和 Symfony 发送电子邮件。我的配置设置为假脱机电子邮件,并且我使用的是第三方 SMTP 服务器 (MailJet)。一切正常。 但如果我为 Swiftmailer 提供了错误的 SMTP 服务器密码,它只会静默失败。

当我关闭假脱机以便立即发送时,我看到 Swiftmailer 正在抛出一个 TransportException。然而,当它被假脱机时,这个异常会在 Symfony 的 kernel.terminate 事件期间被抛出,所以它会被忽略。 Symfony 或 nginx 的日志中都没有任何内容,所以我实际上不知道是否抛出了异常。

那么,如果在kernel.terminate 事件期间抛出连接到 SMTP 服务器的失败,我该如何检测它,以便我可以将其记录到 Monolog 中?

【问题讨论】:

    标签: symfony swiftmailer


    【解决方案1】:

    你应该看看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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多