Django 邮箱找回密码!!!!!!!!!!!!!!!!

 1.大概流程。

@首先在完善登陆页面,增加忘记密码的链接。

@为了账户安全,需要对操作者进行验证,向邮箱发随机数验证!

@在重置验证码页面,验证验证码是否匹配(验证成功跳转至更改密码也页面)。

@ 重置密码成功后重新进入到登录页面。

—————————————————————————————————————————————————

配置服务器邮箱setting.py

EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.163.com' 
EMAIL_PORT = 465
EMAIL_HOST_USER = 'xxx@163.com' # 帐号
EMAIL_HOST_PASSWORD = 'xxx'  # 密码   切记:这里不是邮箱密码  而是授权码什莫是授权码?? 接着往下看就知道了
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

其中EMAIL_HOST根据邮箱进行设置,如果为QQ邮箱,即“smtp.qq.com”。


另外在服务器邮箱中有两处配置:(当打开这两个配置的时候你大概就能看到授权码了ps:示例是qq邮箱 其他邮箱因情况而定 )




如下是生成随机数和发送邮件的方法!
#随机生成验证码
def random_str(randomlength=8):
    str = ''
    chars = 'abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    length = len(chars) - 1
    random = Random()
    for i in range(randomlength):
        str += chars[random.randint(0, length)]
    return str
#发送邮件找回密码 
def findpwdView(request):
    if request.method=="GET":
        email_title = "找回密码"
        code=random_str()#随机生成的验证码
        request.session["code"]=code #将验证码保存到session
        email_body = "验证码为:{0}".format(code)
        send_status = send_mail(email_title, email_body,"xxxx@163.com",["xxxx@qq.com",])
        msg="验证码已发送,请查收邮件"
    else:
        username=request.POST.get("username")
        password=request.POST.get("password")
        user=User.objects.get(username=username)
        code=request.POST.get("code") #获取传递过来的验证码
        if code==request.session["code"]:
            user.set_password(password)
            user.save()
            del request.session["code"] #删除session
            msg="密码已重置"
    return render(request,"findpwd.html",locals())

原文出自:https://segmentfault.com/a/1190000020044479?utm_source=tag-newest

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注