有些用户在注册时需要邮箱验证,下面介绍邮箱验证时怎么实现的 。

邮箱验证是有时限性的,一般是1分钟(60秒)

 

 

首先需要在seetings里面配置邮箱配置文件

授权密钥需要在邮箱里获得

1.

 

 2.设置-账户(选第二个)

3.

 

 

 

 

#QQ邮箱服务配置文件
EMAIL_USE_SSL = True
#邮箱服务
EMAIL_HOST = 'smtp.qq.com'
#端口号
EMAIL_PORT = 465
#账号
EMAIL_HOST_USER = '204.........@qq.com'
#授权秘钥
EMAIL_HOST_PASSWORD = 'dirgpnjkyytjehef'
#发件人
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
 
 
163邮箱配置文件

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = False   #是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完整性。)

EMAIL_USE_SSL = True    #是否使用SSL加密,qq企业邮箱要求使用

EMAIL_HOST = 'smtp.163.com'   #发送邮件的邮箱 的 SMTP服务器,这里用了163邮箱

EMAIL_PORT = 25     #发件箱的SMTP服务器端口

EMAIL_HOST_USER = 'charleschen@xmdaren.com'    #发送邮件的邮箱地址

EMAIL_HOST_PASSWORD = '*********'         #发送邮件的邮箱密码(这里使用的是授权码)

 
 
 
 定义发送路由
 
 
 
# 导包
# 导入send_mail
from django.core.mail import send_mail

# 导入默认发送邮箱
# from mymac.settings import DEFAULT_FROM_EMAIL
import time


# 定义一个发送邮件类
class SendMail(object):

  # 初始化方法
  def __init__(self,tittle,body,email_to,from_email):
    self.tittle = tittle
    self.body = body
    self.email_to = email_to
    self.from_email = from_email

  # 定义发送方法
  def do_send_mail(self):
    # 开始发邮件
    send_status = send_mail(self.tittle,self.body,self.from_email,self.email_to)
    if send_mail:
      return '发送成功'+time.ctime()
    else:
      return '发送失败'+time.ctime()
 
 写测试页面
 
 
# redirect :重定向
from django.shortcuts import render,redirect
from django.http import HttpResponse,HttpResponseRedirect
# 导入类视图
from django.views import View
# 导入反向解析方法
from django.urls import reverse
# 导入发件人
from mymac.settings import DEFAULT_FROM_EMAIL
# 导入邮件类
from myapp.d12_mail_tool import SendMail


# 定义视图类
class SenDjMail(View):
  def get(self,request):
  #可以传参多个邮箱
    sendmail = SendMail('你好','这里是测试环节',['2049180260@qq.com','1961608187@qq.com'],DEFAULT_FROM_EMAIL)
    return HttpResponse(sendmail.do_send_mail())


# d定义注册页面
class Register(View):
# 定义方法
  def get(self,request):
    return HttpResponse('注册页面')
 
 
写前端
<!DOCTYPE html>
{# 加载静态文件#}
{% load static %}


<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>首页</title>
{# 载入js库 #}
<script src="{% static 'js/jquery-1.12.1.min.js' %}"> </script>
<script src="{% static 'js/axios.js' %}"></script>
</head>
<body>
    {# 绑定事件 #}
    <button id="btu" onclick="sendmail()">免费获取验证码</button>
 
    <input type="text">

    <button>提交验证码</button>

    <script>
 
      //定义计时器
      let countdown = 60;

      // 倒计时方法
      function settime(obj){

        // 计时结束
        if(countdown == 0){

          //控制暗纽
          obj.attr('disabled',false);
          //回归正常状态a
          obj.html('免费获取验证码');
          //重新设置计时器
          countdown = 60;
          return;
      }
      //正在计时
      else{
        //控制暗纽
        obj.attr('disabled',true);
        //进度提醒
        obj.html('重新发送('+countdown+')');
        //重新设置计时器
        countdown--;

      }
      //设置动态效果  1000秒  (使用闭包形式)
      setTimeout(function(){ settime(obj) },1000);
      }
      //定义发送邮件
      function sendmail(){

        //开始倒数
        let obj = $("#btu");
        settime(obj);

      }



</script>



</body>
</html>
 
 
以上就是一个简单的邮箱验证方法