Настройте параметр «Локальный домен» SwiftMailer легко, в Symfony 2

SwiftMailer – это способ отправки электронной почты по умолчанию из проекта Symfony 2, и я хотел бы использовать его в приложении. Я указал его на SMTP-сервер, предоставленный моим интернет-провайдером (Virgin Media, в Великобритании), но мои письма не отправлены успешно. Исключенное исключение говорит

Ожидаемый код ответа 250, но получил код «501», с сообщением «501 HELO» требует действительного адреса

в ответ на команду SMTP

HELO [:: 1]

[:: 1] соответствует localhost в IPv6, и не удивительно, что SMTP-сервер отклонил это, если он ожидает правильное имя домена. Отслеживая выполнение через источник Swiftmailer, я считаю, что это значение происходит от _domain на AbstractSmtpTransport; изменение значения во время сеанса отладки позволяет отправить электронное письмо. Хотя он может быть установлен с использованием общедоступного метода setLocalDomain (), он нигде не находится в структуре Symfony 2, поэтому кажется, что нет никакого способа (очевидно, для меня, по крайней мере) легко настроить это значение просто, например, , изменение конфигурационного файла Symfony.

Поэтому мой вопрос заключается в следующем: есть ли другой способ изменить это значение, в идеале используя config, без моего погружения в код Symfony и изменения битов, которые не должны быть изменены? И если да, то что?

Related of "Настройте параметр «Локальный домен» SwiftMailer легко, в Symfony 2"

К сожалению нет.

Код для получения локального домена в SwiftMailer:

/** Try to determine the hostname of the server this is run on */ private function _lookupHostname() { if (!empty($_SERVER['SERVER_NAME']) && $this->_isFqdn($_SERVER['SERVER_NAME'])) { $this->_domain = $_SERVER['SERVER_NAME']; } elseif (!empty($_SERVER['SERVER_ADDR'])) { $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); } } 

Итак, догадывается, и это конфигурация сервера.

Я открыл для SwiftMailer проблему:

https://github.com/swiftmailer/swiftmailer/issues/453

Изнутри контроллера Symfony вы можете настроить имя HELO / EHLO следующим образом: $this->get('swiftmailer.transport')->setLocalDomain('your.domain');