Swift_RfcComplianceException на действительный адрес электронной почты, работает в Windows, а не в Ubuntu

Я сталкиваюсь с тем, что кажется довольно печально известной проблемой со 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 не приводит к сбою регулярного выражения addr-spec на локальном компьютере, на котором работает Xampp в среде Windows, но происходит сбой на компьютере с Ubuntu, на котором запущено решение Xampp из /opt/lampp,

  • Это не похоже на проблему с версией PCRE (обе одинаковые), потому что при извлечении add-spec к строке и запустить его через простой скрипт для анализа, он проходит.
  • В адресах электронной почты нет лишних символов, нет пробелов.

ОБНОВЛЕНИЕ:

Глядя на журналы Apache, я думаю, что, возможно, нашел основную проблему:

Предупреждение PHP: preg_match(): Ошибка компиляции: внутренняя ошибка: ранее проверенный ссылочный подшаблон не найден по смещению 4246 в /home/ubuntu/.../vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php в строке 354, реферер: http://...

Так что в Windows регулярное выражение компилируется нормально, а в Linux - нет; если он не извлечен и не вставлены соответствующие побеги.

Нашел несколько проблем на Github, связанных с этим:

Кажется, жалуются на подшаблон после @ знак. Один из комментариев в вышеупомянутых проблемах Github, по-видимому, подразумевает, что ошибка генерируется, когда Apache обрабатывает регулярное выражение, что соответствует тому, что я испытал в системе Ubuntu 12.10 (хотя и не в Windows).

Может ли это быть связано с тем, что Apache не имеет необходимой поддержки PCRE или неправильно настроен?

Спасибо!

1 ответ

Я отправляю вам пример с swiftmailer:

parameters.yml

destinatarios: [email1, email2, email3]

Сервисы:

название вашей услуги:

    class: your path

    arguments: ["%destinatarios%"]

класс обслуживания:

защищенные $destinatarios;

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

->setCc($this->destinatarios)
Другие вопросы по тегам