php - 有效电子邮件地址的 Swift_RfcComplianceException,适用于 Windows 而不是 Ubuntu

标签 php exception symfony swiftmailer rfc2822

我遇到了 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.’

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

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

奇怪的是,地址:noreply@host.com 在 Windows 环境中运行 Xampp 的本地计算机上不会使 addr-spec 正则表达式失败,但在运行 Ubuntu 的计算机上却会失败来自 /opt/lampp 的 Xampp 解决方案。

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

更新:

查看 Apache 日志我想我可能已经找到了潜在的问题:

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://...

所以在 Windows 上,正则表达式可以正常编译,但在 Linux 上却不行;除非它被提取并放入适当的转义符。

在Github上发现了几个与此相关的问题:

似乎在提示 @ 符号后的子模式。上面引用的 Github 问题中的一条评论似乎暗示当 Apache 处理正则表达式时会抛出错误,这符合我在 Ubuntu 12.10 系统(尽管不是在 Windows 上)上的经历。

这是否与 Apache 没有正确的 PCRE 支持或配置不正确有关?

谢谢!

最佳答案

我给你发了一个 swiftmailer 的例子:

参数.yml

目的地:[email1, email2, email3]

服务:

您的服务名称:

    class: your path

    arguments: ["%destinatarios%"]

服务类:

protected $destinatarios;

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

->setCc($this->destinatarios)

关于php - 有效电子邮件地址的 Swift_RfcComplianceException,适用于 Windows 而不是 Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15963755/

相关文章:

c# - 字符串缺少终止符 : "

spring - 是否有通用的 spring-data Exception 类来处理 repo 层抛出的异常?

php - 没有传输支持给定的 Messenger DSN

mysql - 找不到类 'Silex\Provider\PDO'。怎么解决?

php - 将值放入 sql 枚举的最佳实践

php - Symfony2 : Get HTML from another file in controller

c# - 从 wcf 到 asmx 的错误传播

php - 仅加载数据库中的新行

php - 连接到数据库时出现 PDO 错误

php - Symfony2 文件上传表单不显示错误