dongpao5261 2015-09-10 20:51
浏览 32
已采纳

从模型配置邮件程序参数 - Yii2

im using Yii2 and i want to config mailer parameters geting the data from db.

Example:

'mailer' => [ 
            'class' => 'yii\swiftmailer\Mailer',
            'enableSwiftMailerLogging' =>true,
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => $model->getSmtpHost(),
                'username' => $model->getSmtpUser(),
                'password' => $model->getSmtpPass(),
                'port' => $model->getSmtpPort(),
                'encryption' => $model->getSmtpEncryption(),
            ],
        ]

but from web.php can't call methods from models, i tried but throws a error

  • 写回答

2条回答 默认 最新

  • drqrdkfue521903877 2015-09-11 16:00
    关注

    thanks to @Onedev.Link and @arogachev for his answer.that gave me an idea and i solve the problem.

    i solve the problem modyfing swiftmailer component, in Mailer.php added this:

    use app\models\Administracion; //The model i needed for access bd
     class Mailer extends BaseMailer
    {
    ...
    ...
    //this parameter is for the config (web.php)
    public $CustomMailerConfig = false;
    ...
    ...
    ...
    /**
         * Creates Swift mailer instance.
         * @return \Swift_Mailer mailer instance.
         */
        protected function createSwiftMailer()
        {
            if ($this->CustomMailerConfig) {
                $model = new Administracion();
    
                $this->setTransport([
                    'class' => 'Swift_SmtpTransport',
                    'host' => $model->getSmtpHost(),
                    'username' => $model->getSmtpUser(),
                    'password' => $model->getSmtpPass(),
                    'port' => $model->getSmtpPort(),
                    'encryption' => $model->getSmtpEncryption(),
                ]);
            }
    
            return \Swift_Mailer::newInstance($this->getTransport());
        }
    

    And in Web.php added this:

    'mailer' => [ 
                'class' => 'yii\swiftmailer\Mailer',
                'enableSwiftMailerLogging' =>true,
                'CustomMailerConfig' => true, //if its true use the bd config else set the transport here
                'useFileTransport' => false,
    ],
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况