0

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

更重要的是,这是该问题的唯一解决方案;该脚本会毫无问题地通过电子邮件向所有其他用户发送电子邮件。

昨天发生错误时,我手动清除了 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);

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

4

1 回答 1

0

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

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

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

于 2013-10-25T14:45:54.520 回答