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, связанных с этим:
- https://github.com/swiftmailer/swiftmailer/issues/279
- https://github.com/swiftmailer/swiftmailer/issues/259
Кажется, жалуются на подшаблон после @
знак. Один из комментариев в вышеупомянутых проблемах 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)