当你用谷歌搜索这个错误时,几乎所有的问题都是由空的电子邮件地址或未插值的变量引起的。在这种情况下,报告的异常引用了看似有效的地址。
更重要的是,这是该问题的唯一解决方案;该脚本会毫无问题地通过电子邮件向所有其他用户发送电子邮件。
昨天发生错误时,我手动清除了 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);
那么我的下一步调试应该是什么?