The code below works fine when sending emails by default, however I want to override the SwiftMailer transport settings (host, user and password) before sending emails, and the parameters will come from the database.
Does anyone know how to achieve this?
Note. I went through this post , but the listener did nothing, and the OP solution has the $transport->getExtensionHandlers(); method $transport->getExtensionHandlers(); that doesn't work appears in my transport object $ when I unload it.
Composer recording
"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
controller
$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);
source share