Я разрабатываю простое почтовое приложение с учетной записью Gmail в качестве хоста. Оно работает как шарм, но проблема возникает, когда функция send() выдает исключение. Я вижу, что оператор try catch не может обработать исключение. Это не работает, даже когда я использую глобальный класс исключений. этот вопрос обсуждался где-то также.
Например :
Поймать исключение swiftmailer в контроллере Symfony2 dev env
or
https://groups.google.com/forum/#!topic/symfony2/SlEzg_PKwJw
но они не достигли рабочего ответа.
Мой код функции контроллера:
public function ajaxRegisterPublisherAction()
{
//some irrelevant logic
$returns= json_encode(array("username"=>$username,"responseCode"=>$responseCode));
try{
$message = \Swift_Message::newInstance()
->setSubject('hello world')
->setFrom('[email protected]')
->setTo('[email protected]')
->setBody(
$this->renderView('AcmeSinamelkBundle:Default:email.txt.twig',array('name'=>$username,"password"=>$password))
);
$this->container->get("mailer")->send($message);
}
catch (Exception $e)
{
}
return new \Symfony\Component\HttpFoundation\Response($returns,200,array('Content-Type'=>'application/json'));
}
Ответ, отправленный из приведенного выше кода, который я получаю в консоли Firebug:
{"username":"xzdvxvvcvxcv","responseCode":200}<!DOCTYPE html>
<html>
.
.
Swift_TransportException: Connection could not be established with host smtp.gmail.com [Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?]
.
.
</html>
и я ловлю себя на волоске, потому что я не знаю, почему ядро обрабатывает исключение в продолжении моего объекта json?
когда я комментирую эту строку:
$this->container->get("mailer")->send($message);
исключение не возникает, и у меня есть действительный json на стороне клиента (это само собой разумеющееся, хотя) я изменил Exception
на \Exception
или \Swift_TransportException
или даже Swift_TransportException
! но без хорошего результата.