import org.apache.commons.mail.HtmlEmail; //导入方法依赖的package包/类
/**
* @Title: getpassword
* @Description: TODO(会员忘记密码,通过邮箱获取密码)
* @param @param member
* @param @param session
* @param @return设定文件
* @return Object 返回类型
* @throws
*
*/
@RequestMapping(value = "/getPasswrod.htm", method = RequestMethod.GET)
public Object getPasswrod(@Valid
String useremal, HttpServletRequest request, HttpSession session) {
JqReturnJson returnResult = new JqReturnJson();// 构建返回结果,默认结果为false
Member member = new Member();
if (useremal == null) {
returnResult.setMsg("邮箱不能为空");
// 邮箱不存在,就返回这个消息给前台
session.setAttribute("emailStatus", "false");
return "retrievePassword/retrievePasswordEmail";
}
member = memberService.retrieveEmail(useremal);
if (member == null) {
returnResult.setMsg("邮箱不存在");
// 邮箱不存在,就返回这个消息给前台
session.setAttribute("emailStatus", "false");
return "retrievePassword/retrievePasswordEmail";
}
returnResult.setSuccess(true);
ModelAndView mav = new ModelAndView("retrievePassword/sendMail");
// 创建一个临时ID
String retrieveId = "" + Math.random() * Math.random();
/**
* 得到web系统url路径的方法
* */
// 得到web的url路径:http://localhost:8080/ssh1/
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
// 邮件发送成功后,用户点在邮箱中点击这个链接回到设置新密码网站。
String url = basePath + "mailBackPassword.htm?retrieveId=" + retrieveId;
// 将验证邮箱链接后面的registerId存到session中
session.setAttribute(retrieveId, retrieveId);
session.setAttribute("userEmail", useremal);// 把用户邮箱保存起来
// 把用户邮箱存起来
// 设置session的有效时间,为10分钟,10分钟内没有点击链接的话,设置密码将失败
session.setMaxInactiveInterval(600);
// 基于org.apache.commons.mail,封装好的mail,发邮件流程比较简单,比原生态mail简单。
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.qq.com");// QQ郵箱服務器
// email.setHostName("smtp.163.com");// 163郵箱服務器
// email.setHostName("smtp.gmail.com");// gmail郵箱服務器
email.setSmtpPort(465);// 设置端口号
email.setAuthenticator(new DefaultAuthenticator("[email protected]", "zx5304960"));// 用[email protected]这个邮箱发送验证邮件的
email.setTLS(true);// tls要设置为true,没有设置会报错。
email.setSSL(true);// ssl要设置为true,没有设置会报错。
try {
email.setFrom("[email protected]", "冰川网贷管理员", "UTF-8");
// email.setFrom("[email protected]", "[email protected]",
// "UTF-8");
// email.setFrom("[email protected]", "[email protected]", "UTF-8");
} catch (EmailException e1) {
e1.printStackTrace();
}
email.setCharset("UTF-8");// 没有设置会乱码。
try {
email.setSubject("冰川网贷密码找回");// 设置邮件名称
email.setHtmlMsg("尊敬的会员:" + member.getMemberName() + ",请点击" + url + "完成新密码设置!");// 设置邮件内容
email.addTo(useremal);// 给会员发邮件
email.send();// 邮件发送
} catch (EmailException e) {
throw new RuntimeException(e);
}
return mav;
}