【发布时间】:2014-10-08 10:48:59
【问题描述】:
默认情况下,以下代码在发送电子邮件时可以正常工作,但是我想在发送电子邮件之前覆盖 SwiftMailer 传输选项(主机、用户和密码),并且这些选项将来自数据库。
有人知道如何实现吗?
注意:我通过了this post,但监听器没有做任何事情,并且 OP 的解决方案有$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);
【问题讨论】:
标签: php symfony swiftmailer