abk*_*rim 1 php exception swiftmailer
我尝试了几种方法,但是没有一种方法可行,包括StackOverFlow-> Swiftmailer TransportException中的一种方法被try catch块捕获了。
我需要捕获运行类Swiftmailer的实例以发送电子邮件的类的块中可能生成的异常
/**
* @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";
}
Run Code Online (Sandbox Code Playgroud)
在控制台上运行时显示错误
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
Run Code Online (Sandbox Code Playgroud)
您将try ... catch
-block包裹在swiftmailer邮件撰写的错误部分周围。
手册摘录:
如果您基于可能包含无效电子邮件地址的数据源自动添加收件人,则可以通过使用
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";
}
/* and now your transport... */
try {
$result = $mailer->send($message);
} catch (\Swift_TransportException $Ste) {
echo "EROORRRRRRRRRRRRRRRRRRRR\n\n\n";
}
That should do the job.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3851 次 |
最近记录: |