實現功能
忘記密碼,注冊成功等向用戶發送驗證碼信息或注冊信息。
業務流程
忘記密碼:
1、驗證郵箱是否注冊過;
2、向郵箱發送驗證碼;
3、驗證驗證碼是否正確;
4、重新設置密碼;
我這里着重介紹發送郵件的代碼,其他的業務代碼需要大家自己去敲。在寫代碼之前,建議先去申請一個163等其他公司的郵箱,並且獲取該郵箱的授權碼。這里介紹一下163郵箱的授權碼獲取。
第一步:
第二步:
第三步:
第四步:設置授權碼就好,這里就不截圖了。設置授權碼后,你要記錄授權碼和SMTP服務器: smtp.163.com。SMTP服務器地址可以在POP3/SMTP/IMAP 查詢到。163郵箱就是 smtp.163.com,可以直接拿去用。
附錄:代碼
一、js代碼

1 //查詢郵箱是否存在 2 $("#checkEm").click(function(){ 3 content = $("#content").val(); 4 5 if(content.length == 0 || content.length == ""){ 6 alert("請輸入您的郵箱"); 7 return; 8 }else if(checkContent(content) == 0){ 9 alert("您輸入的郵箱格式不正確!") 10 }else if(checkContent(content) == 1){ 11 inputType = "email"; 12 $.ajax({ 13 url:"<%=serverIp%>/webcons.do?method=checkEmail", 14 dataType:"text", 15 type:"get", 16 data:"fromWhere=<%=code%>&email="+content+"&type=1&isCountry=2", 17 async:false, 18 success:function(result){ 19 console.log(result) 20 if(result == 1){ 21 $("#checkTable").hide(); 22 $("#codeTable").show(); 23 }else{ 24 alert("您輸入的郵箱還沒有注冊!"); 25 } 26 } 27 }) 28 } 29 })

1 $("#sendSms").click(function(){ 2 if(inputType == "email"){ 3 $.ajax({ 4 url:"<%=serverIp%>/webcons.do?sendEmailCode", 5 type:"post", 6 data:"email="+content+"&code=<%=code%>", 7 dataType:"json", 8 async:false, 9 success:function(result){ 10 if(result.state == 1){ 11 timer = window.setInterval("timego()",1000); 12 } 13 } 14 }) 15 }else if(inputType == "mobile"){ 16 $.ajax({ 17 url:"<%=serverIp%>/webcons.do?sendMobileCode", 18 type:"post", 19 data:"mobile="+content+"&code=<%=code%>", 20 dataType:"json", 21 async:false, 22 success:function(result){ 23 if(result.state == 1){ 24 if(result.state == 1){ 25 timer = window.setInterval("timego()",1000); 26 } 27 }else{ 28 alert(result.msg); 29 } 30 } 31 }) 32 } 33 })
二、action處理代碼

1 // 在發送驗證碼之前,先生成6位隨機數 2 private String randomBiocuration(){ 3 String result=""; 4 for(int i=0;i<6;i++){ 5 //生成97-122的int型的整型 6 int intValue=(int)(Math.random()*9+1); 7 //將intValue強制轉化成char類型后接到resul后面 8 result=result+String.valueOf(intValue); 9 } 10 return result; 11 }

1 // 檢查郵箱是否存在 2 @RequestMapping(params = "method=checkEmailBiocuration", method = RequestMethod.GET) 3 public void checkEmailBiocuration(String email, int isCountry, 4 HttpServletRequest request, HttpServletResponse response) { 5 try { 6 String fromWhere = request.getParameter("fromWhere") == null?null:request.getParameter("fromWhere"); 7 String type = request.getParameter("type") == null ? "1" : request 8 .getParameter("type"); 9 int type1 = Integer.parseInt(type); 10 UserInfo userInfo = null; 11 if(fromWhere != null){ 12 userInfo = webService.getuserInfoByEmail(email,type1,fromWhere); 13 }else{ 14 userInfo = webService.getUserInfoByEmail(email, type1); 15 } 16 if (userInfo != null) { 17 response.getWriter().print("1"); 18 } else { 19 response.getWriter().print("0"); 20 } 21 } catch (Exception e) { 22 e.printStackTrace(); 23 } 24 }

1 //發送郵件 2 @RequestMapping(params = "sendEmailCodeBiocuration",method = RequestMethod.POST) 3 public void sendEmailCodeBiocuration(String email,String code,HttpServletResponse response){ 4 try { 5 Conferences cons = webService.getConferencesByCode(code); 6 JSONObject result = new JSONObject(); 7 ConPasswordBack passwordBack = webService.getPasswordBackByType(1,cons.getConferencesId()); 8 if(passwordBack != null){ 9 String emailCodeStr = randomBiocuration(); 10 EmailPublic emailPublic = webService.getEmailPublicById(passwordBack.getEmailPublicId()); 11 EmailModel emailModel = webService.getEmailModelById(passwordBack.getEmailModelId()); 12 EmailUtil.init().sendEmail('發件人郵箱', ‘發件人郵箱的密碼’, ‘收件人郵箱’, ‘郵箱標題’, ‘郵箱內容’, ‘發件人郵箱Smtp地址’); 13 EmailCode emailCode = webService.getEmailCodeByConId(email,cons.getConferencesId()); 14 if(emailCode == null){ 15 emailCode = new EmailCode(); 16 } 17 emailCode.setCode(emailCodeStr); 18 emailCode.setCreateTime(new Date()); 19 emailCode.setConferencesId(cons.getConferencesId()); 20 emailCode.setEmail(email); 21 webService.saveObject(emailCode); 22 } 23 result.accumulate("state", 1); 24 writeJson(response, result.toString()); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 }
三、serviceImpl 代碼

1 // 服務層實現類 2 public class EmailUtil { 3 private static EmailUtil emailUtil = null; 4 public static EmailUtil init(){ 5 if(emailUtil == null){ 6 emailUtil = new EmailUtil(); 7 } 8 return emailUtil; 9 } 10 public boolean sendEmail(String emailName,String password,String email,String title,String content,String smtp) { 11 try { 12 MailSSLSocketFactory sf = new MailSSLSocketFactory(); 13 sf.setTrustAllHosts(true); 14 // 建立郵件會話 15 Properties props = new Properties(); // 用來在一個文件中存儲鍵-值對的,其中鍵和值是用等號分隔的, 16 // 存儲發送郵件服務器的信息 17 props.put("mail.smtp.host", smtp); 18 // 同時通過驗證 19 props.put("mail.smtp.auth", "true"); 20 props.put("mail.smtp.port", "465"); 21 props.put("mail.smtp.ssl.enable", "true"); 22 props.put("mail.smtp.ssl.socketFactory", sf); 23 props.setProperty("mail.transport.protocol", "smtp"); 24 // 根據屬性新建一個郵件會話 25 Session s = Session.getInstance(props); 26 s.setDebug(false); // 有他會打印一些調試信息。 27 28 // 由郵件會話新建一個消息對象 29 MimeMessage message = new MimeMessage(s); 30 // 設置郵件 31 InternetAddress from = new InternetAddress(emailName); // 發件人郵箱 32 message.setFrom(from); // 設置發件人的地址 33 // 34 // //設置收件人,並設置其接收類型為TO 35 InternetAddress to = new InternetAddress(email); //收件人郵箱 36 message.setRecipient(Message.RecipientType.TO, to); 37 38 // 設置標題 39 message.setSubject(title); 40 41 // 設置信件內容 42 message.setContent(content,"text/html;charset=gbk"); // 發送HTML郵件 43 44 // 設置發信時間 45 message.setSentDate(new Date()); 46 47 // 存儲郵件信息 48 message.saveChanges(); 49 50 // 發送郵件 51 Transport transport = s.getTransport("smtp"); 52 // 以smtp方式登錄郵箱,第一個參數是發送郵件用的郵件服務器SMTP地址,第二個參數為用戶名,第三個參數為密碼 53 transport.connect(smtp,emailName,password); 54 // 發送郵件,其中第二個參數是所有已設好的收件人地址 55 transport.sendMessage(message, message.getAllRecipients()); 56 transport.close(); 57 return true; 58 } catch (Exception e) { 59 e.printStackTrace(); 60 return false; 61 } 62 } 63 }
人生的路上,跋涉了很久,當驀然回首,會發覺從前走過的每一段路、經歷過的每一段時光都是美好奇妙、獨一無二的。其實,不曾辜負走過的每一份光陰,就是生命最大的圓滿與無憾。