PHP(thinkphp5.0和thinkphp5.1)实现发送邮箱验证码

1.首先将发送邮件的拓展包放到thinkphp框架的vendor目录下,拓展包在主页下载资源中,标题为“tp5和tp5.1发送邮件拓展包”

 2.在框架公共方法文件中添加以下方法

/**
 * [SendMail 邮件发送]
 * @param [type] $address  [description]
 * @param [type] $title    [description]
 * @param [type] $message  [description]
 * @param [type] $from     [description]
 * @param [type] $fromname [description]
 * @param [type] $smtp     [description]
 * @param [type] $username [description]
 * @param [type] $password [description]
 */
function SendMail($address,$mail_code='123456')
{
    include(Env::get("root_path").'/vendor/phpmailer/PHPMailerAutoload.php');  //tp5.1引用方法
//    vendor('phpmailer.PHPMailerAutoload'); //tp5.0引用方法
    $mail = new \PHPMailer();

    // 设置PHPMailer使用SMTP服务器发送Email

    //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
//    $mail->SMTPDebug = 1;

    $mail->IsSMTP();
    // 设置邮件的字符编码,若不指定,则为'UTF-8'
    $mail->CharSet='UTF-8';
    // 添加收件人地址,可以多次使用来添加多个收件人
    $mail->AddAddress($address);

    $data = \think\Db::name('emailconfig')->where('email','email')->find();
    $title = $data['title'];
    $message = $data['content'].$mail_code;
    $from = $data['from_email'];
    $fromname = $data['from_name'];
    $smtp = $data['smtp'];
    $username = $data['username'];
    $password = $data['password'];
    // 设置邮件正文
    $mail->Body=$message;
    // 设置邮件头的From字段。
    $mail->From=$from;
    // 设置发件人名字
    $mail->FromName=$fromname;
    // 设置邮件标题
    $mail->Subject=$title;
    // 设置SMTP服务器。
    $mail->Host=$smtp;

    //设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure = 'ssl';
    //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
    $mail->Port = 465;

    // 设置为"需要验证" ThinkPHP 的config方法读取配置文件
    $mail->SMTPAuth=true;
    //设置html发送格式
    $mail->isHTML(true);
    // 设置用户名和密码。
    $mail->Username=$username;
    $mail->Password=$password;
    return($mail->Send());

}

3.在你的控制器中定义一个发送验证码的方法(以下是5.1的独立验证规则写法,5.0的独立验证规则自行查阅文档),发送成功后将的验证码储存到cookie中

    //发送邮箱验证
    public function send_mail(){
        $data = $this -> request -> post();
        //1.验证规则
        $rule = [
            'email|邮箱'=>'require|email',//必填,不能为空 | 邮箱格式
        ];
        //2.添加字段的验证规则:初始化rule属性
        Validate::rule($rule);
        //3.数据效验
        if(!Validate::check($data)){
            $this->json([],Validate::getError(),201);
        }

        $mail_code = rand(000000,999999);
        $mailto = SendMail($data['email'],$mail_code);
        if(false == $mailto) {
            $this->json([],'发送失败',201);
        } else {
            cookie('mail_code', $mail_code, 180);
            $this->json([],'邮箱验证码发送成功,3分钟内有效',200);
        }
    }

4.获取cookie中的邮箱验证码进行自己的业务操作判断就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值