• 仿联想商城laravel实战---7、lavarel中如何给用户发送邮件


    仿联想商城laravel实战---7、lavarel中如何给用户发送邮件

    一、总结

    一句话总结:

    设置邮件服务器,比如163邮箱
    lavarel中配置邮件服务,在.env中
    控制器中使用Mail对象发送邮件
    也可直接百度“lavarel中 如何发送邮件” 或 手册的邮件发送里面去看

    1、如何设置邮件服务器?

    1、登录163邮箱
    2、设置》POP3/SMTP
    3、设置授权密码

    2、laravel中配置邮件服务器在哪个文件(及如何配置)?

    .env 以及 config里面的mail.php(设置from(发送方))
    打开.env文件
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.163.com
    MAIL_PORT=25
    MAIL_USERNAME=18734136852@163.com
    MAIL_PASSWORD=a123456
    MAIL_ENCRYPTION=null
    MAIL_FROM_NAME=联想账户中心

    3、lavarel中向用户发送邮件有哪两种主要方式?

    发送文字:Mail对象的raw()方法
    发送页面:Mail对象的send()方法
    1、发送文字
    
    Mail::raw('我爱你云知梦',function($message){
        $message->to("892865095@qq.com");
        $message->subject("亲爱的用户,恭喜您注册成功");
    });
    
    2、发送页面
    send()方法
    Mail::send('mail.index',[],function($message){
    $message->to("892865095@qq.com");
    $message->subject("亲爱的用户,恭喜您注册成功");
    });

    4、lavarel中发送验证邮件,让用户自己激活如何实现?

    发送带参数的‘’立即激活‘’页面到用户邮箱:发送的验证邮件里面有立即激活的a标签,这个a标签是直接跳转到网站页面,这个a标签也带上用户id和token等参数,
    控制器中激活:根据用户在邮箱中点击的链接及链接的参数完成激活

    5、接收页面传过来的参数是在路由中还是在控制器中?

    路由中

    6、如何判断用户激活的时候token值是否正确?

    将token值存入数据库,和用户激活传过来的token值做对比,激活成功之后更新token值(防止重复激活)
    // 激活账户
    
    public function jihuo($id,$token){
    
      // 查询用户存在
    
      $data=DB::table("user")->where("id",$id)->first();
    
      // 判断token
    
      if ($token==$data->token) {
          # code...
          $arr=array();
    
          $arr['status']=1;
          $arr["token"]=str_random(50);
    
          // 进行数据库状态的修改 激活成功 跳转到登陆页面
          if(DB::table("user")->where("id",$id)->update($arr)){
              return redirect("/login");
          }
    
      }else{
          echo "您的token已经过期";
      }
    
    }

    7、lavarel闭包中如何使用外部变量?

    use方法:Mail::send('mail.index',["id"=>$id,"token"=>$data['token']],function($message) use($email){
    $email=$arr['email'];
    Mail::send('mail.index',["id"=>$id,"token"=>$data['token']],function($message) use($email){
        $message->to($email);
        $message->subject("亲爱的用户,恭喜您注册成功");
    });

    8、邮件激活可以优化的部分?

    用户注册之后,弹出一个立即激活的页面,这个页面可以直接跳转到用户的邮箱

    9、a链接如何跳转到用户注册的邮箱(比如qq邮箱,比如用户激活账户的时候)?

    直接根据@后面的部分特判邮箱服务器地址
    function gotomail($mail) {
        $temp=explode('@',$mail);
        $t=strtolower($temp1);
    
        if ($t=='163.com') {
            return 'mail.163.com';
        } else if ($t=='vip.163.com') {
            return 'vip.163.com';
        } else if ($t=='126.com') {
            return 'mail.126.com';
        } else if ($t=='qq.com' || $t=='vip.qq.com' || $t=='foxmail.com') {
            return 'mail.qq.com';
        } else if ($t=='gmail.com') {
            return 'mail.google.com';
        } else if ($t=='sohu.com') {
            return 'mail.sohu.com';
        } else if ($t=='tom.com') {
            return 'mail.tom.com';
        } else if ($t=='vip.sina.com') {
            return 'vip.sina.com';
        } else if ($t=='sina.com.cn' || $t=='sina.com') {
            return 'mail.sina.com.cn';
        } else if ($t=='tom.com') {
            return 'mail.tom.com';
        } else if ($t=='yahoo.com.cn' || $t=='yahoo.cn') {
            return 'mail.cn.yahoo.com';
        } else if ($t=='tom.com') {
            return 'mail.tom.com';
        } else if ($t=='yeah.net') {
            return 'www.yeah.net';
        } else if ($t=='21cn.com') {
            return 'mail.21cn.com';
        } else if ($t=='hotmail.com') {
            return 'www.hotmail.com';
        } else if ($t=='sogou.com') {
            return 'mail.sogou.com';
        } else if ($t=='188.com') {
            return 'www.188.com';
        } else if ($t=='139.com') {
            return 'mail.10086.cn';
        } else if ($t=='189.cn') {
            return 'webmail15.189.cn/webmail';
        } else if ($t=='wo.com.cn') {
            return 'mail.wo.com.cn/smsmail';
        } else if ($t=='139.com') {
            return 'mail.10086.cn';
        } else {
            return '';
        }
    }

    二、内容在总结中

     
  • 相关阅读:
    BZOJ_4320_ShangHai2006 Homework_分块
    BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
    BZOJ_2788_[Poi2012]Festival_差分约束+tarjan+floyed
    BZOJ_2795_[Poi2012]A Horrible Poem_hash+暴力
    BZOJ_1598_[Usaco2008 Mar]牛跑步_A*
    [转载]java匿名对象
    [转载]static in Java
    Bat批处理文件入门
    在set中放入自定义类型
    [转载]C++STL概述
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10891906.html
Copyright © 2020-2023  润新知