带有效地址的SwiftMail异常

时间:2013-10-22 14:35:24

标签: php email swiftmailer

当你谷歌这个错误时,几乎所有的问题都是空的电子邮件地址或未插入的变量。在这种情况下,报告的异常引用了看似有效的地址。

更多关于这个问题的唯一地址;该脚本会毫无问题地通过电子邮件发送给所有其他用户。

昨天发生错误时,我手动清除mySQL中的字段并重新输入,因为我担心Outlook中粘贴了一些流浪隐形字符,但错误今天再次发生。

以下是用户电子邮件被替换的错误。他的电子邮件只是firstNameLastName@yahoo.com。没什么不寻常的。

PHP Fatal error:  Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given [Xxx Yyy <xxxyyy@yahoo.com>] does not comply with RFC 2822, 3.6.2.' in /home/foo/foo.org/classDBI/Swift-4.1.5/lib/classes/Swift/Mime/Headers/MailboxHeader.php:308
Stack trace:
#0 /home/foo/foo.org/classDBI/Swift-4.1.5/lib/classes/Swift/Mime/Headers/MailboxHeader.php(238): Swift_Mime_Headers_MailboxHeader->_assertValidAddress('Xxx Yyy <xx...')
#1 /home/foo/foo.org/classDBI/Swift-4.1.5/lib/classes/Swift/Mime/Headers/MailboxHeader.php(96): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes(Array)
#2 /home/foo/foo.org/classDBI/Swift-4.1.5/lib/classes/Swift/Mime/Headers/MailboxHeader.php(60): Swift_Mime_Headers_MailboxHeader->setNameAddresses(Array)
#3 /home/foo/foo.org/classDBI/Swift-4.1.5/lib/classes/Swift/Mime/SimpleHeaderFactory.php(60): Swift_Mime_Headers_MailboxHeader->setFieldBodyModel(Array)
#4 /home/foo/tax in /home/foo/foo.org/classDBI/Swift-4.1.5/lib/classes/Swift/Mime/Headers/MailboxHeader.php on line 308

产生错误的代码,除了这一条记录之外都成功

$message = Swift_Message::newInstance()
  ->setSubject("Ticket Report for " . date("n/j/Y"))
  // email => name
  ->setFrom(array('postmaster@' . SITEDOMAIN => ORGNAME . ' Admin'))
  // email => name
  ->setTo(array($u->email => $u->first_name . ' ' . $u->last_name))
  //Give it a body
  ->setBody(strip_tags($email_body))
  //And optionally an alternative body
  ->addPart(nl2br($email_body), 'text/html')
  ;

$transport = new Swift_SmtpTransport(); 
$mailer = Swift_Mailer::newInstance($transport);
$result = $mailer->send($message);

那么我的下一步调试是什么呢?

1 个答案:

答案 0 :(得分:0)

通常情况下,一点点验证会有很长的路要走,垃圾数据会导致错误。

用户在电子表格中输入了他们的电子邮件“Xxx Yyy <xxxyyy@yahoo.com>”,并导入到数据库中,围绕我们通常的有效性检查。所以错误看起来像是抱怨有效的地址......

在出路上添加电子邮件验证时发现了这一点,我们已针对此重复添加了适当的检查。