dopq87915 2016-10-25 19:51
浏览 63
已采纳

Silex Swiftmailer Swift_TransportException无法捕获

I am developing a web applicationen on base of the silex framework with decent Mail functionality. Sending mails works fine with the basic configuration and established connection to the mail server. In the case of errors e.g. due to connection loss, i want to log the causes and prevent them to be sent to the client. But iam unable to catch the mailer errors, especially the Swift_TransportException. I encapsulated the call of the 'send' function and also added an Error handler, both without success. Is this a bug, or am i missing something?

The error handler:

    $app->error(function (\Swift_TransportException $e, Request $request, $code) {
      //TODO log
    });

The usage of the send function:

        try{
            $message = \Swift_Message::newInstance()
                ->setSubject($mail->getSubject())
                ->setFrom($mail->getFrom())
                ->setTo($mail->getTo())
                ->setBody($mail->getBody());

            $app['mailer']->send($message);
        }
        catch(\Swift_TransportException $exception)
        {
          //TODO log
        }
  • 写回答

1条回答 默认 最新

  • dtrhd2850 2016-11-03 15:54
    关注

    I found a solution to my problem in this post:

    silex-swiftmailer-not-making-smtp-connection-upon-execution

    To sum it up, the problem was caused by the default behaviour of the swiftmailer in silex. By default the mails aren't send directly at code execution time, but buffered and send after the request result is returned to the client. Therefore errors aren't caught in the try block. To change this behavior i added slightly modified code from the referenced post to my mailer registration.

    $app->register(new Silex\Provider\SwiftmailerServiceProvider());
    $app['mailer'] = new \Swift_Mailer($app['swiftmailer.transport']);
    

    thanks to igor for the good explanation.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言绘制生存曲线时出现警告:All aesthetics have length 1, but the data has 2 rows.
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响