Ben*_*der 5 php swiftmailer symfony
默认情况下,在发送电子邮件时,下面的代码工作正常但是我想在发送电子邮件之前覆盖SwiftMailer传输选项(主机,用户和密码),选项将来自数据库.
谁知道如何实现这一目标?
注意:我通过这篇文章,但是听众没有做任何事情,OP的解决方案有一个$transport->getExtensionHandlers();方法,当我转储它时,它没有出现在我的$ transport对象中.
作曲家入门
"symfony/swiftmailer-bundle": "2.1.*"
Run Code Online (Sandbox Code Playgroud)
/booking/app/config/parameters.yml
parameters:
mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_user: vizzzzz
mailer_password: 123123
Run Code Online (Sandbox Code Playgroud)
/booking/app/config/config.yml
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
encryption: tls
Run Code Online (Sandbox Code Playgroud)
调节器
$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);
Run Code Online (Sandbox Code Playgroud)
好的,我找到了.文件
// 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2877 次 |
| 最近记录: |