Yii2-在运行时设置邮件传输参数

时间:2019-06-21 17:44:17

标签: php yii2

例如,我试图在下面添加的基本模板config/web.php中设置邮件程序的配置。

$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'
            ]
        ]
    ]
];

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

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

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

1 个答案:

答案 0 :(得分:1)

Yii2 Mailer类为您提供了一个名为setTransport的公共方法,您可以将传输配置数组作为参数传递给该方法。

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

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

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

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

希望这会有所帮助。