Django实现发送邮件找回密码功能

在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能。

找回密码流程

功能流程:

1.首先在用户登录界面,添加“忘记密码”链接

2.生成随机验证码,发送邮件到用户信息中填写邮箱

3.在重置密码页面,验证填写验证码是否需匹配

4.重置密码成功,重新进入到登录页面

技术点:

1.发送邮件使用Django内置的django.core.mail实现

2.重置密码页面验证验证码填写是否匹配,提前将发送的验证码进行缓存,再进行匹配

发送邮件配置

在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”。

另外在邮箱中有两处配置:

1.开启POP3/SMTP服务(设置->POP3/SMTP/IMAP)

2.配置中的密码并不是邮箱的登录密码,填写的是授权码

发送邮件实现

在应用(user)下的views.py中,进行验证码的生成与发送邮件操作。这里关于基础项目搭建、路由配置不再进行赘述。

生成随机验证码方法:

#随机生成验证码
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())

总结

以上所述是小编给大家介绍的Django实现发送邮件找回密码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • django 发送邮件和缓存的实现代码

    发送邮件 概述:Django中内置了邮件发送功能,发送邮件需要使用SMTP服务,常用的免费服务器有:163.126.QQ 注册并登陆163邮箱 打开POP3/SMTP服务与IMAP/SMTP服务 重置授权密码 配置 #邮件发送 EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST='smtp.163.com' EMAIL_PORT=25 #发送邮件的邮箱 EMAIL_HOST_USER='clement@16

  • django 开发忘记密码通过邮箱找回功能示例

    一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找到验证链接网址,访问重设密码网址reset.html===>重设密码提交数据,成功则返回首页,失败则返回错误信息 二. 1.users/forms.py文件中 from django import forms from captcha.fields import CaptchaField .......

  • django中SMTP发送邮件配置详解

    Django中内置了邮件发送功能,被定义在django.core.mail模块中.发送邮件需要使用SMTP服务器,常用的免费服务器有:163.126.QQ,下面以qq邮箱为例. 注册qq邮箱,然后登录设置 找到设置里面POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 3.需要发送验证码生成授权码 4.找到settings.py文件,中点击下图配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBacken

  • Django发送邮件和itsdangerous模块的配合使用解析

    项目需求:用户注册页面注册之后,系统会发送一封邮件到用户邮箱,用户点击链接以激活账户,其中链接中的用户信息需要加密处理一下 其中激活自己邮箱的smtp服务的操作就不在加以说明,菜鸟教程上有非常清晰的讲解,也可以去网上搜索详细步骤 首先在Django项目的settings文件中配置发送邮件相关的配置如下: # 固定写法 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # smtp服务器地址 EMAIL_HOST = 'sm

  • Django实现发送邮件功能

    1)首先注册一个邮箱,这里以163邮箱为例 2)注册之后登录,进行如下修改 找到设置,设置一个授权码,授权码的目的仅仅是让你有权限发邮件,但是不能登录到邮箱进行修改,发送邮件时,可以代替密码 3)然后在项目里的配置文件settings.py中进行一些配置: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = False #是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完

  • Python django实现简单的邮件系统发送邮件功能

    本文实例讲述了Python django实现简单的邮件系统发送邮件功能.分享给大家供大家参考,具体如下: django邮件系统 Django发送邮件官方中文文档 总结如下: 1.首先这份文档看三两遍是不行的,很多东西再看一遍就通顺了. 2.send_mail().send_mass_mail()都是对EmailMessage类使用方式的一个轻度封装,所以要关注底层的EmailMessage. 3.异常处理防止邮件头注入. 4.一定要弄懂Email backends 邮件发送后端 5.多线程的邮件

  • Django实现发送邮件找回密码功能

    在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能. 找回密码流程 功能流程: 1.首先在用户登录界面,添加"忘记密码"链接 2.生成随机验证码,发送邮件到用户信息中填写邮箱 3.在重置密码页面,验证填写验证码是否需匹配 4.重置密码成功,重新进入到登录页面 技术点: 1.发送邮件使用Django内置的django.core.mail实现 2.重置密码页面验证验证码填写是否匹配,提前将发送的验证

  • Asp.NEt邮箱验证修改密码通过邮箱找回密码功能

    使用邮箱验证修改密码,在这里我是使用163免费邮进行测试 前台代码 <input type="text" name="Mail" id="Mail"/> <span>*请输入邮箱</span><br/> <asp:Button ID="zhuce" runat="server" Text="tijiao" OnClick="

  • PHP会员找回密码功能的简单实现

    设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的"找回密码"超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3.系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678). 4.系统借助Jmail功能把该用户的信息发送到该用户的邮箱中(内容包括:用户名.临时密码.提醒用户及时修改临时密码的提示语). 5.用户用临时密码即可登录. HTML 我们在找回密码的

  • Java实现邮件找回密码功能

    本文实例为大家分享了Java实现邮件找回密码功能的具体代码,供大家参考,具体内容如下 1.有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最

  • java实现通过绑定邮箱找回密码功能

    本文实例为大家分享了java实现通过绑定邮箱找回密码功能,供大家参考,具体内容如下 1.输入用户名及验证码,验证用户名是否存在 (1).生成验证码工具类 package com.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map

  • SpringMVC实现通过邮件找回密码功能

    最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 加密能防止伪造攻击,一次url只能验证一次,并且绑定了用户

  • java springboot邮箱找回密码功能的实现讲解

    目录 一.主要内容 二.邮箱找回密码的思想 三.前台页面 四.注意事项 五.部分实现代码 5.1 页面代码 5.2 发送验证码到注册邮箱的代码 5.3 修改密码 总结 一.主要内容 基于springboot实现密码找回功能. 二.邮箱找回密码的思想 1.输入注册邮箱,点击获取验证码.会将验证码发送到邮箱. 2.用户进入邮箱,查看验证码. 3.用户输入验证码,输入新密码,点击修改密码,完成修改. 三.前台页面 四.注意事项 如果是163或者qq邮箱需要打开授权,以163为例: 如果是阿里的企业邮箱

  • thinkphp框架下实现登录、注册、找回密码功能

    本文实例为大家分享了thinkphp框架下使用ajax表单提交的登录.注册.找密码的实现方法,以及注册后的用户需后台审核. user表的字段为id.num.password.name.email.addtime.status 具体代码如下 <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller { //处理登录 public function signin(){

  • Django通用类视图实现忘记密码重置密码功能示例

    前言 在Django中有大量的通用类视图,例如ListView,DetailView,CreateView,UpdateView等等,将所有重复的增删改查代码抽象成一个通用类,只需要配置极少量的代码即可实现功能. 使用通用类视图完成找回密码功能 首先引入 from django.contrib.auth.views import PasswordResetView, PasswordResetConfirmView, \ PasswordResetDoneView, PasswordChange

  • Java实现邮箱找回密码实例代码

    通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 邮箱 3.加密能防止

随机推荐