Yii2-在运行时设置邮件传输参数 [英] Yii2 - Setting Mailer Transport parameters on runtime

查看:169
本文介绍了Yii2-在运行时设置邮件传输参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为Mailer设置配置,例如在下面添加的基本模板config/web.php中.

I am trying to set the configuration for the Mailer, for example in basic template config/web.php i have added below.

$config = [
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'testmailhost.com', // want to replace with $mail_host
                'username' => 'test@test.com',
                'password' => 'testing111',
                'port' => '587',
                'encryption' => 'tls'
            ]
        ]
    ]
];

现在,我要设置存储在数据库表设置中的主机,用户名,密码端口等的值.那么如何在这里替换这些值.

Now I want to set the values for host, username, password port etc stored in database table settings. so how can replace these values here.

我已经创建了一个组件,我可以通过以下方式访问值

I have created a component which I can access the values as

$st = Yii::$app->getTable;
$mail_host = $st->settings('general', 'mail_host');

推荐答案

Yii2 Mailer类为您提供了一个名为

The Yii2 Mailer class provides you with a public method named setTransport to which you can pass the transport config array as param.

在配置中,只需添加邮件程序组件配置,然后通过您的自定义组件添加transport配置.

In the config just add the mailer component configurations and add the transport configurations via your custom component.

$config = [
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' => false,
        ]
    ]
];

请参见下面的代码,您现在可以在组件中使用它,以从数据库中添加传输配置.

See the below code, you can use it in your component now to add the transport configurations from your database.

Yii::$app->mailer->setTransport(
        [
            'class' => 'Swift_SmtpTransport',
            'host' => 'localhost', 
            'username' => 'username',
            'password' => 'password',
            'port' => '587', 
            'encryption' => 'tls'
        ]
    );

希望这会有所帮助.

这篇关于Yii2-在运行时设置邮件传输参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆