YII2邮件发送

YII2 邮件发送

我的应用是高级模板

以下是基本配置。

在 common/config/main-local.php中写入以下代码配置 Mail代理

    return [
        'components' => [
            ...//your code,
            //以下是 mail 的配置
            'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                'viewPath' => '@common/mail',
                'transport' => [
                    'class' => 'Swift_SmtpTransport',
                    //我用的是QQ 的代理,所以这里是 QQ 的配置信息
                    'host' => 'smtp.qq.com',
                    'port' => 587,
                    'encryption' => 'tls',    
                    //这部分信息不应该公开,所以后期会由数据库中拿取
                    'username' => '你的 QQ 邮箱',
                    'password' => '你的 QQ 邮箱授权码',
                ],
                //发送的邮件信息配置
                'messageConfig' => [

                    'charset' => 'utf-8',

                    'from' => ['546456@qq.com' => '**']
                ],

            ],'

        ]

    ];
接下来就可以发送邮件了
    不使用模板
    $mail = Yii::$app->mailer->compose();
    $mail->setTo('发送的邮箱');
    $mail->setSubject('邮件的标题');
    $mail->setHtmlBody('邮件内容,这里可以使用 HTML 代码');
    $mail->send();//发送

    使用模板
    //compose 与控制器中的 render 方法参数方式相同.
    $mail = Yii::$app->mailer->compose('模板文件名称', ['key' => $value]);
    ...
    //$mail->setHtmlBody(); 在使用模板时候不要调用该方法否则会覆盖掉模板
    $mail->send();
动态设置 mail 配置信息。
1. 先从数据中拿到你的配置信息,默认你已经会CRUD 了。
2. 开始设置 HOST 等信息。
    $mail = Yii::$app->mailer;
    $mail->transport = $mail->transport->newInstance($host, $port, 'tls');
    $mail->transport->setUsername('你的邮箱帐号');
    $mail->transport->setPassword('你的邮箱密码');



在开放qq邮箱的smtp后使用qq邮箱地址和qq密码配置服务器后会出现错误

Failed to authenticate on SMTP server with username "1173957281" using 1 possible authenticators

经查看资料得知需要用qq授权码

配置mail

'transport' => [
    'class' => 'Swift_SmtpTransport',
    'host' => 'smtp.qq.com',  //每种邮箱的host配置不一样 用的qq邮箱
    'username' => '123456@qq.com',
    'password' => 'pbjkxe*****wibfe', // 十六位授权码
    'port' => '465',
    'encryption' => 'ssl',
],
'messageConfig'=>[
    'charset'=>'UTF-8',
    'from'=>['123456@qq.com'=>'admin']
],

并且你需要配置你的params[common/config/params.php]配置文件中的supportEmail

return [
    'adminEmail' => '123456@qq.com',
    'supportEmail' => '123456@qq.com',
    'user.passwordResetTokenExpire' => 3600,
];

要不会出现邮箱地址不匹配问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值