【问题标题】:Overriding Swiftmailer transport options dynamically instead of using parameters.yml options动态覆盖 Swiftmailer 传输选项,而不是使用 parameters.yml 选项
【发布时间】: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


    【解决方案1】:

    好的,我找到了。 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);
    

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 2015-08-16
      • 2012-04-13
      • 2015-09-16
      • 2021-11-04
      • 2020-10-04
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多