Php 有效电子邮件地址上的Swift\u RfcComplianceException在Windows中工作,而不是在Ubuntu中

Php 有效电子邮件地址上的Swift\u RfcComplianceException在Windows中工作,而不是在Ubuntu中,php,exception,symfony,swiftmailer,rfc2822,Php,Exception,Symfony,Swiftmailer,Rfc2822,我遇到了SwiftMailer的一个相当臭名昭著的问题: 致命错误:未捕获异常“Swift\u RfcComplianceException”,消息“邮箱地址已给定”[noreply@host.com]不符合RFC 2822第3.6.2节的要求。' 正在使用以下代码创建消息(有效): 奇怪的是地址:noreply@host.com在Windows环境中运行Xampp的本地计算机上,addr spec regex不会失败,但在运行Xampp解决方案的Ubuntu计算机上,在/opt/lampp之外

我遇到了SwiftMailer的一个相当臭名昭著的问题:

致命错误:未捕获异常“Swift\u RfcComplianceException”,消息“邮箱地址已给定”[noreply@host.com]不符合RFC 2822第3.6.2节的要求。'

正在使用以下代码创建消息(有效):

奇怪的是地址:noreply@host.com在Windows环境中运行Xampp的本地计算机上,addr spec regex不会失败,但在运行Xampp解决方案的Ubuntu计算机上,在
/opt/lampp
之外,addr spec regex会失败

  • PCRE版本似乎没有问题(两者都是相同的),因为当我将
    addspec
    提取到一个字符串并通过一个简单的脚本进行解析时,它通过了
  • 电子邮件地址中没有多余的字符,也没有未修剪的空白
更新

查看Apache日志,我想我可能已经发现了潜在的问题:

PHP警告:preg_match():编译失败:内部错误:在第354行的/home/ubuntu/../vendor/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.PHP中的偏移量4246处未找到先前选中的引用子模式,referer:http://...

因此,在Windows上,正则表达式可以很好地编译,但在Linux上则不行;除非它被提取出来并放入适当的逃逸装置

在Github上发现与此相关的一些问题:

似乎在抱怨
@
符号后的子模式。上面提到的Github问题中的一条评论似乎暗示,Apache处理正则表达式时会抛出错误,这与我在Ubuntu 12.10系统(尽管不是在Windows上)上遇到的情况相符

这可能与Apache没有正确的PCRE支持或配置不正确有关吗


谢谢

我向您发送了一个关于swiftmailer的示例:

参数.yml 目的:[电子邮件1、电子邮件2、电子邮件3]

服务: 您的服务名称:

    class: your path

    arguments: ["%destinatarios%"]
服务类别: 受保护的目的地

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

->setCc($this->destinatarios)

我目前正在调查一个类似的错误。我能找到的所有解决方案都涉及到切换到另一个Apache配置/版本,但我觉得这非常不令人满意。您还不知道Apache的确切配置导致了该错误,是吗?很遗憾,没有,对不起。虽然我使用的是虚拟主机,但我使用的是一个Xampp版本(如上所述),主要是默认设置(IIRC)。我相信我会使用其中一个Xampp版本,该版本在2013年4月基本上是最新的。我已经切换到使用nginx的Vagrant+Docker解决方案。感谢您的快速回复!我还没有放弃;也许我仍然可以解决这个问题,问题是系统和Apache的PCRE版本不匹配。一个
libphp5.so
针对系统重建
libpcre
解决了它。
public function __construct($destinatarios)
{
    $this->destinatarios = $destinatarios;
}

->setCc($this->destinatarios)