我使用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有人能帮忙解决吗?简单地说,它应该捕获一个异常,这样其他函数就不会受到影响。
发布于 2015-06-30 19:59:16
您正在将try ... catch-block包装在快速邮件的组合中的错误部分。
手册摘录
如果根据可能包含无效电子邮件地址的数据源自动添加收件人,则可以通过使用
Swift_Validate::email($email)验证地址并仅添加验证地址来防止可能的异常。另一种方法是将您的setTo()、setCc()和setBcc()调用包装在一个try-catch块中,并在catch块中处理Swift_RfcComplianceException。
因此,您应该在向Swift_Message-object添加地址时使用它,如下所示:
$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);也尝试捕获,因为如果有其他问题,它可能会抛出异常。
https://stackoverflow.com/questions/31137017
复制相似问题