javamail实现邮箱找回密码

1.首先简单的配置一下:
进入QQ邮箱:
在这里插入图片描述
2.邮件配置类:

/**
 * 邮件配置类
 * @Author tony
 * @Date 9:27 2020/1/8
 **/
@Configuration
public class MailConfig {

	/**
	 * 获取邮件发送实例
	 * @return
	 */
	@Bean
	public MailSender mailSender(){
		JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.qq.com");//指定用来发送Email的邮件服务器主机名
        mailSender.setPort(587);//默认端口,标准的SMTP端口
        mailSender.setUsername("[email protected]");//用户名 注意这个不是登录用户的邮箱  要写另外其他一个邮箱
        mailSender.setPassword("secret");//密码
        return mailSender;
	}
}

3.找回密码前台页面:
点击忘记密码进入找回密码页面:

在这里插入图片描述

<form method="post">
		<table>
			<tr>
				<td>邮 箱:</td>
				<td colspan="2"><input type="text" id="email" name="email" placeholder="请输入您注册用时候的邮箱" class="layui-input"/></td>
			</tr>
			<tr>
				<td>验证码:</td>
				<td><input type="text" id="yzm" name="yzm" class="layui-input" style="width: 80px"/></td>
				<td><button id="yzmbtn" class="layui-btn" onclick="sendEmail();return false;">获取验证码</button></td>
			</tr>
			<tr>
				<td><button class="layui-btn" onclick="submitData();return false;">提交</button></td>
				<td><font id="errorInfo" color="red"></font></td>
			</tr>
		</table>
		 
	</form>
</div>
<script src="/static/js/jquery.js"></script>
<script>

	function sendEmail(){
		var email=$("#email").val();
		if(email==""){
			 $("#errorInfo").text("请输入邮件!");
			  $("#email").focus();
			  return false;
		}
		alert("验证码已发送到您的邮箱,请注意查收,假如长时间未收到遇见,请联系管理员!");
		$("#yzmbtn").attr({"disabled":"disabled"});// 点击获取验证码按钮后   使按钮失效
		$.post("/user/sendEmail",{email:email},function(result){
			  if(result.success){
				  $("#yzm").focus();
			  }else{
				  $("#errorInfo").text(result.errorInfo);
			  }
		  },"json");
	}
	
	

</script>

4.获取验证码:

/**
	 * 发送邮件
	 * @param email
	 * @param session
	 * @return
	 * @throws Exception
	 */
	@ResponseBody
	@RequestMapping("/sendEmail")
	public Map<String,Object> sendEmail(String email, HttpSession session)throws Exception{
		Map<String,Object> resulMap=new HashMap<String,Object>();
		if(StringUtil.isEmpty(email)){
			resulMap.put("success", false);
			resulMap.put("errorInfo", "邮件不不能为空!");
			return resulMap;
		}
		User u = userService.findByEmail(email);
		if(u==null){
			resulMap.put("success", false);
			resulMap.put("errorInfo", "这个邮件不存在!");
			return resulMap;
		}
		String mailCode = StringUtil.genSixRandomNum();
		System.out.println("mailCode:"+mailCode);
		SimpleMailMessage message=new SimpleMailMessage(); //邮件发送器
		message.setFrom("[email protected]"); // 发件人 注意这个不是登录用户的邮箱  要写另外其他一个邮箱
		message.setTo(email);
		message.setSubject("测试站点-用户找回密码"); // 主题
		message.setText("验证码:"+mailCode);
		mailSender.send(message);

		// 验证码存到session中
		session.setAttribute("mailCode", mailCode);
		session.setAttribute("userId", u.getId());
		resulMap.put("success", true);
		return resulMap;
	}

在这里插入图片描述

5.点击提交,进行验证:

	@Resource
	private JavaMailSender mailSender;
	/**
	 * 邮件验证码判断 重置
	 * @param yzm
	 * @param session
	 * @return
	 * @throws Exception
	 */
	@ResponseBody
	@RequestMapping("/checkYzm")
	public Map<String,Object> checkYzm(String yzm,HttpSession session)throws Exception{
		Map<String,Object> resultMap=new HashMap<String,Object>();
		if(StringUtil.isEmpty(yzm)){
			resultMap.put("success", false);
			resultMap.put("errorInfo", "验证码不能为空!");
			return resultMap;
		}
		String mailCode=(String) session.getAttribute("mailCode");
		Integer userId=(Integer) session.getAttribute("userId");
		if(!yzm.equals(mailCode)){
			resultMap.put("success", false);
			resultMap.put("errorInfo", "验证码错误!");
			return resultMap;
		}
		User user = userService.getById(userId);
		user.setPassword(CryptographyUtil.md5("123456", CryptographyUtil.SALT));// 密码重置为123456 请立即登录修改密码
		userService.save(user);
		resultMap.put("success", true);
		return resultMap;
	}
function submitData(){
		var yzm=$("#yzm").val();
		if(yzm==""){
			 $("#errorInfo").text("请输入验证码!");
			  $("#yzm").focus();
			  return false;
		}
		$.post("/user/checkYzm",{yzm:yzm},function(result){
			  if(result.success){
				  alert("已通过验证,密码已经重置成123456,请登录后立刻修改密码!");
				  parent.reloadPage();
			  }else{
				  $("#errorInfo").text(result.errorInfo);
			  }
		  },"json");
	}
发布了98 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37767455/article/details/103887655