I'm using SwiftMailer bundle with Symfony 2. I pass my smtp user/password settings in config.yml file, it works great, but I need to take this settings from database, when I'm sending mail. I can acces this params:
$mailer = $this->getContainer()->get('mailer')->getTransport();
But is it possible to change them on runtime ? I dont see any setter methods. many thanks!
Many thanks, but it's not the solution i was looking, on kernel request I don't know which account I'll use. I needed to change settings inside my send mail loop. I found pretty cool solution:
foreach ($locations as $location) {
// get settings for account
$user = $location->getSmtpUser();
$pass = $location->getSmtpPass();
// switch to new settings
$transport = $this->getContainer()->get('mailer')->getTransport();
$ext = $transport->getExtensionHandlers();
$auth_handler = $ext[0];
$auth_handler->setUserName($user);
$auth_handler->setPassword($pass);
// send message using new settings
$message = \Swift_Message::newInstance()
->setSubject( $subject )
->setFrom( $from )
->setTo( $email )
->setBody( $body )
->setContentType('text/html');
$this->getContainer()->get('mailer')->send( $message );
}