在我们使用网站注册账号时,使用邮箱发送验证码是很普遍的事。那么下面就介绍使用Django项目发送邮箱验证码来进行验证注册。
django项目的创建,及app的创建这里就不说了。
现在说一下在settings.py中的配置。
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 25
#发送邮箱的邮件
EMAIL_HOST_USER = '[email protected]'
#密码或授权码
EMAIL_HOST_PASSWORD = 'jin'
#收件人看到的发件人
EMAIL_FROM = '[email protected]'
注意:有可能这里不是要你邮箱的密码,还有可能是授权码。
views.py配置
# 导入django内置发送邮件包
from django.core.mail import send_mail
from django.conf import settings
#随机数函数
def random_str():
_str = '1234567890abcdefghijklmnopqrstuvwxyz'
return ''.join(random.choice(_str) for i in range(4))
def email_send(request):
return render(request,'email_send.html')
def send_email(request):
"""
邮件发送函数。ajax发送get请求,调用随机字符串函数,生成四位随机数,保存到session中,
并发送邮件到验证邮箱。
post请求中判断得到的随机字符串是否与session中所保存的字符串相同,若相同则重定向到主页面。
:param request:
:return:
"""
if request.method == 'GET':
try:
email = request.GET['email']
except:
email = ''
email_code = random_str()
msg = '验证码:'+email_code
send_mail('邮箱验证',msg,settings.EMAIL_FROM,
[email])
print(email_code)
# 将验证码保存到session中在接下来的操作中进行验证
request.session['email_code'] = email_code
return HttpResponse('ok')
else:
# 验证验证码是否输入正确
if request.POST.get('email_code') == request.session['email_code']:
return redirect('/info/')
else:
return HttpResponse('验证码错误')
前端页面
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
{% load static %}
<body>
<input type="email" id="email">
<button id="verify">验证</button>
<form action="/user/send_email/" method="post">
<input type="text" placeholder="验证码" name="email_code">
<input type="submit" value="提交">
{% csrf_token %}
</form>
<script type="text/javascript" src="{% static 'js/jquery-3.3.1.min.js' %}"></script>
<script type="text/javascript">
$('#verify').click(function () {
$.ajax({
type:'GET',
url:'/user/send_email/',
data:{'email':$('#email').val()},
success:function (result) {
alert('发送成功!');
}
});
});
</script>
</body>
</html>
此处使用ajax发送验证码,发送成功前端弹出提示框提示发送成功。