Приведенный ниже код работает нормально при отправке электронных писем по умолчанию, однако я хочу переопределить параметры транспорта SwiftMailer (хост, пользователь и пароль) перед отправкой электронной почты, и эти параметры будут поступать из базы данных.
Кто-нибудь знает, как этого добиться?
Замечания: Я прошел через эта почта но слушатель ничего не делал, и решение ОП имеет $transport->getExtensionHandlers();
метод, который не появляется в моем объекте $ transport, когда я его выгружаю.
Композитор
"symfony/swiftmailer-bundle": "2.1.*"
/booking/app/config/parameters.yml
parameters:
mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_user: vizzzzz
mailer_password: 123123
/booking/app/config/config.yml
swiftmailer:
transport: "%mailer_transport%"host: "%mailer_host%"username: "%mailer_user%"password: "%mailer_password%"spool: { type: memory }
encryption: tls
контроллер
$hostDb = $dbObject->getHost();
$userDb = $dbObject->getUser();
$passwordDb = $dbObject->getPassword();
// then I should override setting here so that the data coming from parameters.yml is overriden
$order = // database object
$message = \Swift_Message::newInstance()
->setSubject($order->getSubject())
->setFrom($order->getFrom())
->setTo($order->getTo())
->setBody($content)
;
$this->mailer->send($message);
Хорошо, я нашел это. доктор
// override transport options so that parameters.yml is by-passed
$transport = \Swift_SmtpTransport::newInstance($hostDb,$portDb)
->setUsername($userDb)
->setPassword($passwordDb)
;
$this->mailer = \Swift_Mailer::newInstance($transport);
// end
$order = // database object
$message = \Swift_Message::newInstance()
->setSubject($order->getSubject())
->setFrom($order->getFrom())
->setTo($order->getTo())
->setBody($content)
;
$this->mailer->send($message);
Других решений пока нет …