YII的邮箱验证找回密码

1.配置发件邮箱的信息,在项目目录下的config文件夹下的web.php,找到‘mailer’这个配置项目,配置内容如下:

 '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' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.163.com',
                'username' => 'shenlu12205@163.com',
                'password' => 'ak403852386',
                'port' => '465',
                'encryption' => 'ssl',
            ],

        ],

注意:你发邮件的邮箱必须开启ssl,这个功能要登录你的邮箱的设置上可以开启。

2.控制器里面找回密码的方法,这里发送邮件用到的方法定义在Admin的model里面,这个方法主要是接受用户输入的邮箱,就是收件人邮箱,最后放回邮件是否发送成功。

    public function actionSeekpassword()
    {
        $this->layout = false;
        $model = new Admin;
        if (Yii::$app->request->isPost) {
            $post = Yii::$app->request->post();
            if ($model->seekPass($post)) {
                Yii::$app->session->setFlash('info', '电子邮件已经发送成功,请查收');
            }
        }
        return $this->render("seekpassword", ['model' => $model]);
    }

3.Admin的model的发送邮箱验证的方法,接受收件人的邮箱,这里还游动这个发送邮件的模板文件seekpass.php

    public function seekPass($data)
    {
        $this->scenario = "seekpass";
        if ($this->load($data) && $this->validate()) {
            //做点有意义的事
            $time = time();
            $token = $this->createToken($data['Admin']['adminuser'], $time);//邮件验证有效时间
            $mailer = Yii::$app->mailer->compose('seekpass', ['adminuser' => $data['Admin']['adminuser'], 'time' => $time, 'token' => $token]);
            $mailer->setFrom("shenlu12205@163.com");
            $mailer->setTo($data['Admin']['adminemail']);
            $mailer->setSubject("测试-找回密码");
            if ($mailer->send()) {
                return true;
            }
        }
        return false;

    }

4.发送邮件的模板文件seekpass.php,存放在项目目录下的mail目录里面

<p>尊敬的<?php echo $adminuser; ?>,您好:</p>

<p>您的找回密码链接如下:</p>

<?php $url = Yii::$app->urlManager->createAbsoluteUrl(['admin/manage/mailchangepass', 'timestamp' => $time, 'adminuser' => $adminuser, 'token' => $token]); ?>
<p><a href="<?php echo $url; ?>"><?php echo $url; ?></a></p>

<p>该链接5分钟内有效,请勿传递给别人!</p>

<p>该邮件为系统自动发送,请勿回复!</p>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值