有些用户在注册时需要邮箱验证,下面介绍邮箱验证时怎么实现的 。
邮箱验证是有时限性的,一般是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>
以上就是一个简单的邮箱验证方法