我遇到了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计算机上运行失败Xampp解决方案来自/opt/lampp
。
add-spec
提取到一个字符串并通过一个简单的脚本进行解析时,它会通过。更新:
查看Apache日志,我想我可能已经找到了根本问题:
PHP警告:preg_match():编译失败:内部错误:在/home/ubuntu/.../vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/中的偏移4246处找不到先前检查的引用子模式第354行的Headers / MailboxHeader.php,referer:http:// ...
所以在Windows上,正则表达式编译得很好,但在Linux上却没有;除非它被提取并放入适当的逃逸。
在Github上发现了一些与此相关的问题:
似乎在@
标志后抱怨子模式。上面引用的Github问题中的一条注释似乎暗示当Apache处理正则表达式时会抛出错误,这与我在Ubuntu 12.10系统上遇到的情况相符(虽然不在Windows上)。
这可能与Apache没有正确的PCRE支持或配置错误有关吗?
谢谢!
答案 0 :(得分:-1)
我发送swiftmailer的例子:
destinatarios:[email1,email2,email3]
您的服务名称:
class: your path
arguments: ["%destinatarios%"]
protected $ destinatarios;
public function __construct($destinatarios)
{
$this->destinatarios = $destinatarios;
}
->setCc($this->destinatarios)