Swift_RfcComplianceException on valid email address, works in Windows not in Ubuntu

自古美人都是妖i 提交于 2019-12-23 16:31:02

问题


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:

  • https://github.com/swiftmailer/swiftmailer/issues/279
  • https://github.com/swiftmailer/swiftmailer/issues/259

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:


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)


来源:https://stackoverflow.com/questions/15963755/swift-rfccomplianceexception-on-valid-email-address-works-in-windows-not-in-ubu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!