2015-06-30 1 views
2

Я использую Swift-почтовое отправление для отправки электронной почты, оно не вызывает исключения на недопустимом адресе электронной почты & вызывает ошибку.Быстрое письмо не вызывает исключение из-за недействительного сообщения электронной почты

Мой код:

try 
{ 
    $message->setBody($html, "text/html"); 
    $result = $mailer->send($message); 
} 
catch(Swift_RfcComplianceException $e) 
{ 
    echo "Address ".$email." seems invalid"; 
} 

Для адреса электронной почты, который не соответствует RFC он просто выдает эту ошибку:

Fatal error: Uncaught exception Swift_RfcComplianceException with message Address 
in mailbox given [[email protected]@ex.com] does not comply with RFC 2822, 3.6.2. 
thrown in /swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php on line 352 

Может кто-нибудь помочь ее решению? Просто он должен поймать исключение, поэтому другие функции не будут затронуты.

ответ

2

Вы обертываете try ... catch -блок вокруг неправильной части вашего состава почты swiftmailer.

Отрывок из the manual:

If you add recipients automatically based on a data source that may contain invalid email addresses, you can prevent possible exceptions by validating the addresses using Swift_Validate::email($email) and only adding addresses that validate. Another way would be to wrap your setTo() , setCc() and setBcc() calls in a try-catch block and handle the Swift_RfcComplianceException in the catch block.

Поэтому вы должны использовать его при добавлении адреса в Swift_Message -объект, как это:

$message = Swift_Message::newInstance(); 

// add some message composing here... 

$email = "somewrongadress.org"; 
try { 
    $message->setTo(array($email)); 
} catch(Swift_RfcComplianceException $e) { 
    echo "Address ".$email." seems invalid"; 
} 

Кроме того, я бы посоветовал попробовать некоторые прилова вокруг $result = $mailer->send($message);, так как это может вызвать исключение, если что-то еще не так.

+0

Получил, работал отлично :) –