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");
}