Swift邮件没有捕获无效电子邮件的异常

时间:2015-06-30 11:28:03

标签: php swiftmailer

我正在使用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 [ex@example@ex.com] does not comply with RFC 2822, 3.6.2.
thrown in /swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php on line 352

任何人都可以帮忙解决它吗?只是它应该捕获异常,因此其他功能不受影响。

1 个答案:

答案 0 :(得分:2)

你正在围绕swiftmailer邮件组成的错误部分包裹try ... catch -

摘自the manual

  

如果您根据可能的数据源自动添加收件人   包含无效的电子邮件地址,可以防止可能的异常   通过使用Swift_Validate::email($email)和。验证地址   仅添加验证的地址。另一种方法是包装你的   setTo()setCc()setBcc()调用try-catch块和句柄   阻止块中的Swift_RfcComplianceException

因此,您应该在向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);附近试一试,因为如果出现其他问题,可能会引发异常。