gpt4 book ai didi

php - 动态覆盖 Swiftmailer 传输选项而不是使用 parameters.yml 选项

转载 作者:可可西里 更新时间:2023-11-01 13:54:02 24 4
gpt4 key购买 nike

下面的代码在默认情况下发送电子邮件时工作正常,但我想在发送电子邮件之前覆盖 SwiftMailer 传输选项(主机、用户和密码),这些选项将来自数据库。

有人知道如何实现吗?

注意:我通过了this post但是监听器没有做任何事情,OP 的解决方案有 $transport->getExtensionHandlers(); 方法,当我转储它时,它没有出现在我的 $transport 对象中。

Composer 条目

"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);

最佳答案

好的,我找到了。 Doc

// 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);

关于php - 动态覆盖 Swiftmailer 传输选项而不是使用 parameters.yml 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26255081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com