在Symfony2 dev env控制器中捕获swiftmailer异常

pet*_*iss 10 swiftmailer symfony

我不知道为什么我没有在我的控制器中捕获Swiftmailer的异常.我做错了什么,或者错过了什么?

在控制器中我有:

try {
    $this->get('mailer')->send($email);
}
catch (\Swift_TransportException $e) {
    $result = array(
        false, 
        'There was a problem sending email: ' . $e->getMessage()
    );
}
Run Code Online (Sandbox Code Playgroud)

在它到达我的代码之前它似乎被Symfony抓住了,所以我没有能够自己处理错误,而是获得标准的500页 Swift_TransportException: Connection could not be established

如果无法发送电子邮件,则不需要暂停应用程序,因为电子邮件并不重要 - 我只是想发出通知.

也许有办法禁用Symfonys捕获某些异常或某些控制器?

小智 3

当您执行$this->container->get("mailer")->send($email);此操作时,如果您打开了假脱机功能,则此时不会发送电子邮件。请参阅http://symfony.com/doc/current/cookbook/email/spool.html

如果您有默认设置spool: { type: memory },则\Swift_TransportException在控制器退出后,将在内核终止阶段抛出 。解决此问题的一种方法是关闭假脱机(但随后您的用户可能必须等待电子邮件发送),或者您可以创建自己的事件侦听器来处理异常。http://symfony.com/doc/current/cookbook/service_container/event_listener.html