django邮件发送验证码

在我们使用网站注册账号时,使用邮箱发送验证码是很普遍的事。那么下面就介绍使用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('验证码错误')

前端页面




    
    Title

{% load static %}



{% csrf_token %}

此处使用ajax发送验证码,发送成功前端弹出提示框提示发送成功。

 

 

 

 

 

 

你可能感兴趣的:(Django)