我正在使用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
任何人都可以帮忙解决它吗?只是它应该捕获异常,因此其他功能不受影响。
答案 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);
附近试一试,因为如果出现其他问题,可能会引发异常。