7.邮件发送&账户激活

1.将验证码保存到session

$request->session()->put('validate_code',$validateCode->getCode());

2.在MemberController中获取session的值

$validate_code_session = $request->session()->get('validate_code','');
            if ($validate_code_session != $validate_code) {
                $m3_result->status = 8;
                $m3_result->message = "验证码不正确";
                return $m3_result->toJson();
            }
  • laravel框架中的session会加密,不要用常规PHP方法获取session,不然比较结果会不一样。

3.配置邮箱环境变量

在.env文件中进行配置

MAIL_DRIVER=smtp
MAIL_HOST=stmp.163.com
MAIL_PORT=25
MAIL_USERNAME=XXXX@163.com
MAIL_PASSWORD=XXX  //自己设置的校验码
MAIL_ENCRYPTION=null
image.png

4.调用laravel中 mail::send()接口

Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {
            $m->from('hello@app.com', 'Your Application');

            $m->to($user->email, $user->name)->subject('Your Reminder!');
        });
  • emails_reminder 邮件提示内容

5.在models中设置email格式

<?php

namespace App\Models;

class M3Email {
  public $from;  // 发件人邮箱
  public $to; // 收件人邮箱
  public $cc; // 抄送
  public $attach; // 附件
  public $subject; // 主题
  public $content; // 
}

6.在MemberController中调用M3Email

 $m3_email = new M3Email;
            $m3_email->to = $email;
            $m3_email->cc = 'XXXX@qq.com';
            $m3_email->subject = "大帅逼验证";
            $m3_email->content = '请于24小时内完成验证 http://localhost:8000/service/validate_email'
                                . '?member_id=' . $member->id
                                . '&code=' . $uuid;

7.设置UUID

<?php

namespace App\Tool;

class UUID{
    static function create($prefix = ''){
        
        $str = md5(uniqid(mt_rand(), true));  

        $uuid  = substr($str,0,8);   
        $uuid .= substr($str,8,4);   
        $uuid .= substr($str,12,4);   
        $uuid .= substr($str,16,4);   
        $uuid .= substr($str,20,12);   

        return $prefix . $uuid;
    }
}

8.在ValidateController中验证信息

public function validateEmail(Request $request)
    {
        $member_id = $request->input('member_id','');
        $code = $request->input('code','');
         if ($member_id == '' || $code == '') {
            return "验证异常";
        }

        $tempEmail = tempEmail::where('member_id',$member_id)->first();
        if ($tempEmail == null) {
            return "验证异常";
        }
        if ($tempEmail->code = $code) {
            if(time()>strtotime($tempEmail->deadline)){
                return "链接失效1";
            }

            $member = Member::find($member_id);
            $member->active = 1;
            $member->save();

            return redirect('/login');
        }else{
            return "链接失效2";
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,912评论 0 5
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,094评论 0 8
  • 一. 说明 以下内容大部分引用Laravel China社区的文章 - 分享下团队的开发规范 ——《Laravel...
    knghlp508阅读 7,898评论 0 28
  • 介绍 Laravel 是一款 MVC架构、 目前最流行的 PHP框架。 Laravel的优点在于: 丰富的comp...
    那就远走阅读 7,935评论 3 18
  • 过去做事情急,什么东西拿起来就用,不喜欢进行系统性的学习,造成在使用过程中的错误和低效,现在感觉自己耐心多了,用之...
    马文Marvin阅读 2,020评论 0 10