2015-01-29 2 views
2

Я пытаюсь вернуть fail сообщений с JSON, если почта отправки не удалась, вот мой код:как вернуть false при пересылке почты в zend framework 2?

$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({ 
      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, поэтому сообщение об ошибке не отображается

ответ

1

Вы улавливаете только 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; 
    } 
-1

не могли бы вы попробовать:

} 
catch (\Zend\Mail\Transport\Exception\DomainException $e) { 
    $sent = false; 
} catch (Exception $e) { 
    $sent = false; 
} 

Только предположение ....

Смежные вопросы