duanli9930 2013-04-12 05:30
浏览 468

有效电子邮件地址的Swift_RfcComplianceException,适用于Windows而非Ubuntu

I'm running into what appears to be a rather infamous issue with SwiftMailer:

Fatal error: Uncaught exception ‘Swift_RfcComplianceException’ with message ‘Address in mailbox given [noreply@host.com] does not comply with RFC 2822, 3.6.2.’

The message is being created with the following code (effectively):

$message = \Swift_Message::newInstance()
         ->setSubject('Subject')
         ->setFrom(array('noreply@host.com' => 'Host'))
         ->setTo('recipient@gmail.com');
...

The odd thing is that the address: noreply@host.com does not fail the addr-spec regex on a local machine running Xampp in a Windows environment, but does fail on an Ubuntu machine running the Xampp solution out of /opt/lampp.

  • This does not appear to be a problem with the PCRE version (both the same) because when I extract the add-spec to a string and run that through a simple script to parse, it passes.
  • There are no extra characters, no untrimmed white space in the email addresses.

UPDATE:

Looking at the Apache logs I think I may have found the underlying issue:

PHP Warning: preg_match(): Compilation failed: internal error: previously-checked referenced subpattern not found at offset 4246 in /home/ubuntu/.../vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php on line 354, referer: http://...

So on Windows, the regex compiles fine but on Linux it does not; unless it is extracted and the appropriate escapes put in.

Found a few issues on Github related to this:

Seems to be complaining about the subpattern after the @ sign. One of the comments in the above referenced Github issues seems to imply that the error is being thrown when Apache processes the regex, which fits with what I've experienced on an Ubuntu 12.10 system (though not on Windows).

Could this have to do with Apache not having the right PCRE support or it being configured incorrectly?

Thanks!

  • 写回答

1条回答 默认 最新

  • douwaif22244 2016-03-31 08:32
    关注

    i send you on example with swiftmailer:

    parameters.yml

    destinatarios: [email1, email2, email3]

    services:

    your service name:

        class: your path
    
        arguments: ["%destinatarios%"]
    

    the class of the service:

    protected $destinatarios;

    public function __construct($destinatarios)
    {
        $this->destinatarios = $destinatarios;
    }
    
    ->setCc($this->destinatarios)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?