我正在开发一个使用 Gmail 帐户作为主机的简单邮件应用程序。它的工作原理很吸引人,但是当 send() 函数抛出异常时问题就出现了。我看到 try catch 语句无法处理异常。即使我使用全局异常类,它也不起作用。这个问题也在某处讨论过。
例如 :
在 Symfony2 开发环境控制器中捕获 swiftmailer 异常
或者
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('jafarzadeh91@gmail.com')
->setTo('jafarzadeh991@yahoo.com')
->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 对象的 continue 中处理异常?
当我评论这一行时:
$this->container->get("mailer")->send($message);
没有发生异常,我在客户端有一个有效的 json。(这是理所当然的)我Exception
改为\Exception
or\Swift_TransportException
甚至Swift_TransportException
!但没有好的结果。