如果邮件发送失败,我正在尝试返回带有 json fail
消息,这是我的代码:
$transport = new SmtpTransport();
$options = new SmtpOptions(array(
'name' => 'localhost',
'host' => 'localhost',
'connection_class' => 'login',
'connection_config' => array(
'username' => 'cscsacsac',
'password' => 'csdca',
//'ssl'=>'ssl',
//'port' => '465',
),
));
$transport->setOptions($options);
$sent = true;
try {
$transport->send($mail);
}
catch ('Zend'Mail'Transport'Exception'DomainException $e) {
$sent = false;
}
if($sent){
echo "success";
exit;
}
elseif(!$sent){
echo "fail";
exit;
}
这是 Ajax:
$.ajax({
type: "POST",
url: '<?php echo MAIN_URL?>cases',
data: { name: name, email: email, mobile: mobile, address: address, compliant: compliant },
success:function(data){
if(data =='success'){
$('.casesMailResponse').css({'color':'#00917D'});
$('.casesMailResponse').html('Your case has been sent successfully.');
}
else if(data == 'fail'){
$('.casesMailResponse').css({'color':'#F6565B'});
$('.casesMailResponse').html('Some errors occurred, please try again.');
}
},
});
但是如果失败,我因Incorrect authentication data
而收到内部服务器错误,因此不显示失败消息
您只捕获Zend'Mail'Transport'Exception'DomainException
,但 SMTP 传输适配器也可以引发其他异常。例如send
方法中,它可以抛出Zend'Mail'Transport'Exception'RuntimeException
。
我建议捕获邮件包的异常接口:
$sent = true;
try {
$transport->send($mail);
} catch ('Zend'Mail'Transport'Exception'ExceptionInterface $e) {
$sent = false;
}
你能试试:
}
catch ('Zend'Mail'Transport'Exception'DomainException $e) {
$sent = false;
} catch (Exception $e) {
$sent = false;
}
只是一个猜测....