首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Swiftmailer捕获块异常不工作

用Swiftmailer捕获块异常不工作
EN

Stack Overflow用户
提问于 2015-08-15 09:42:56
回答 1查看 6.1K关注 0票数 2

我尝试了几种方法,但没有一种有效,包括StackOverFlow -> Swiftmailer TransportException get uncaught by try catch block中的一种。

我需要捕获类中可以在块中生成的异常,后者运行了类Swiftmailer的实例来发送电子邮件

代码语言:javascript
复制
 /**
 * @throws Be msut catch swiftmailer exception Swift_TransportException because ->setTo($send_to) containt '' (not valid email sender)
 * But not catch my code.
 */

 $transport = \Swift_SmtpTransport::newInstance()
            ->setHost($settings['smtp_host'])
            ->setPort($settings['smtp_port'])
            ->setEncryption($settings['smtp_security'])
            ->setUsername($settings['smtp_user'])
            ->setPassword($settings['smtp_pass']);
        $mailer = \Swift_Mailer::newInstance($transport);

    echo "Verify code\n";
    try {
        $message = \Swift_Message::newInstance()
            ->setSubject($subject)
            ->setFrom(array($settings['smtp_mail_sender'] => $settings['smtp_name_sender']))
            ->setTo($send_to)
            ->setBody($msg);
        $result = $mailer->send($message);
    } catch (\Swift_TransportException $Ste) {
        echo "EROORRRRRRRRRRRRRRRRRRRR\n\n\n";
    }

在控制台上运行时显示错误

代码语言:javascript
复制
php -q cprsyncbackup.php -option param
No llegue
PHP Fatal error:  Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given [] does not comply with RFC 2822, 3.6.2.' in /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/cprsync/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php:348
Stack trace:
#0 /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/cprsync/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(263): Swift_Mime_Headers_MailboxHeader->_assertValidAddress('')
#1 /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/cprsync/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(106): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes(Array)
#2 /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/cprsync/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(63): Swift_Mime_Headers_MailboxHeader->setNameAddresses(Array)
#3 /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/cprsync/vendor/swiftmailer/swiftmailer/li in /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/cprsync/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php on line 348
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-15 11:54:24

您正在将try ... catch-block包装在快速邮件的组合中的错误部分。

手册摘录

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

因此,您应该在向Swift_Message-object添加地址时使用它,如下所示:

代码语言:javascript
复制
$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";
}

/* and now your transport... */
try {
    $result = $mailer->send($message);
} catch (\Swift_TransportException $Ste) {
    echo "EROORRRRRRRRRRRRRRRRRRRR\n\n\n";
}

That should do the job.
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32023499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档