首页 > Yii2 mailer 动态配置报错 unknown property: Swift_MailTransport::host

Yii2 mailer 动态配置报错 unknown property: Swift_MailTransport::host

使用Yii2建立站群,动态读取数据库的发送邮件的smtp配置,可载入后报错Setting unknown property: Swift_MailTransport::host

config/web.phpmailer配置如下:

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    // send all mails to a file by default. You have to set
    // 'useFileTransport' to false and configure a transport
    // for the mailer to send real emails.
    'useFileTransport' => true,
    'transport' => [
        'class'      => 'Swift_SmtpTransport',
//                'host'       => '',
//                'username'   => '',
//                'password'   => '',
//                'port'       => '25',
        'encryption' => 'tls'
    ]
]

在控制器实例化beforeAction 之前进行的如下event绑定:

if (Yii::$app->params['enable_email'] && !empty(Yii::$app->params['smtp_host'])
    && !empty(Yii::$app->params['smtp_user']) && !empty(Yii::$app->params['smtp_pwd'])
) {
    Yii::$app->mailer->useFileTransport = false;
    Yii::$app->mailer->setTransport([
        'host'     => Yii::$app->params['smtp_host'],
        'username' => Yii::$app->params['smtp_user'],
        'password' => Yii::$app->params['smtp_pwd'],
        'port'     => Yii::$app->params['smtp_port']
    ]);
}

试试这个

Yii::$app->set('mailer', [
    'class' => 'yii\swiftmailer\Mailer',
    'viewPath' => '@common/mail',
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => Yii::$app->setting->get('smtpHost'),
        'username' => Yii::$app->setting->get('smtpUser'),
        'password' => Yii::$app->setting->get('smtpPassword'),
        'port' => Yii::$app->setting->get('smtpPort'),
        // 'mail' => Yii::$app->setting->get('smtpMail'), // 显示地址
        'encryption' => 'tls',
    ],
]);

来源:https://github.com/iiYii/getyii/blob/master/frontend%2Fmodels%2FPasswordResetRequestForm.php#L19-L31

【热门文章】
【热门文章】