幾乎每個網站或論壇之類的使用者註冊後都需要通過發送郵件到郵箱啟用使用者,如何啟用郵箱呐?
設計啟用步驟:
1、發送啟用操作鏈結接地址至使用者郵箱。
2、使用者至郵箱查收郵件。
3、使用者點選連結,跳轉至成功頁面(修改啟用狀態),啟用成功。
實現:
/** * 發送郵件 * * @param request * @return */ @RequestMapping(value = "/sendEmail.jhtml") @ResponseBody public String sendEmail(HttpServletRequest request) { DynamicParams params = new DynamicParams(request); StringBuilder builder = new StringBuilder(); StringBuffer url = new StringBuffer(); String type = params.getString("type"); Long uid = params.getLong("id"); User user = userManager.find(uid); String subject = ""; // 判斷是否已啟用 if ("1".equals(String.valueOf(user.getEmailStatus()))) { return errMsg(); } String contextPath = request.getContextPath(); String rUrl = String.valueOf(request.getRequestURL()); url.append(rUrl.substring(0, rUrl.indexOf(contextPath))); url.append(contextPath + "/account"); // 郵箱啟用 // url.append("/activateEmail.jhtml?email=" + user.getEmail() + // "&id=" + uid + "&mode=activate"); url.append("/activateEmail.jhtml?id=" + uid + "&mode=activate"); // 本文 builder.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" </head><body>"); builder.append("請點擊下方連結啟用您的郵箱,完成啟用郵箱的操作!"); builder.append("<br/><br/>"); builder.append("<a href=\"" + url + "\">"); builder.append(url); builder.append("</a>"); builder.append("</body></html>"); subject = "郵箱地址啟用 - xxxx"; MailSender.mailSimple(user.getEmail(), subject, builder.toString(), false, null); return successMsg(); } /** * 啟用郵箱 * * @param request * @return */ @RequestMapping(value = "/activateEmail.jhtml") public String activateEmail(HttpServletRequest request, Model model) { DynamicParams params = new DynamicParams(request); // 啟用之前查詢 User user = userManager.find(params.getLong("id")); if ("1".equals(String.valueOf(user.getEmailStatus()))) { // 已啟用 model.addAttribute("flag", false); } else { // 未啟用 userManager.activateEmail(params); // 啟用之後查詢 user = userManager.find(params.getLong("id")); request.getSession().setAttribute("sessionUser", user); model.addAttribute("mode", params.getString("mode")); model.addAttribute("flag", true); } return "site/modules/account/activateSuccess"; }
MailSender.mailSimple(user.getEmail(), subject, builder.toString(),false, null);即為發送郵件工具類,如有不明白可參考我之前的文章(spring mail發送郵件)
忘記密碼(重設密碼)
背景:同樣是各大網站都會擁有的一個功能,通過發送驗證碼到使用者註冊的郵箱重設密碼
設計:1)輸入使用者名稱/手機號碼/郵箱,驗證碼。
2)使用者選擇手機驗證或郵箱驗證,發送驗證碼到手機或郵箱。如果使用者郵箱未啟用,則不允許郵箱驗證。
3)使用者輸入驗證碼成功,進入密碼重新設定頁面。
4)重設密碼
流程:
實現:
/** * 發送郵件 * * @param request * @return */ @RequestMapping(value = "/sendEmail.jhtml") @ResponseBody public String sendEmail(HttpServletRequest request) { DynamicParams params = new DynamicParams(request); StringBuilder builder = new StringBuilder(); StringBuffer url = new StringBuffer(); String type = params.getString("type"); Long uid = params.getLong("id"); User user = userManager.find(uid); String subject = ""; // type = forget 密碼重設 String verifyCode = VerifyCodeUtils.generateVerifyCode(4); request.getSession().setAttribute("resetCertCode", verifyCode); url.append("<font color='red'>" + verifyCode + "</font>"); // 本文 builder.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body>"); builder.append("要使用新的密碼, 請將已下字元輸入驗證框中,完成重設密碼的操作!"); builder.append("<br/><br/>"); builder.append("<div>" + url + "</div>"); builder.append("</body></html>"); subject = "密碼重設 - xxxx"; MailSender.mailSimple(user.getEmail(), subject, builder.toString(), false, null); return successMsg(); }
至此,啟用郵箱和忘記密碼功能已初步完成!希望對大家的學習有所協助,大家可以動手實現啟用郵箱並找回密碼。