java應用:向用戶注冊的郵箱發送郵件


實現功能

  忘記密碼,注冊成功等向用戶發送驗證碼信息或注冊信息。

業務流程

  忘記密碼:

  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           })
View Code
 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           })
View Code

  二、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     }
View Code
 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     }
View Code
 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     }
View Code

  三、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 }
View Code

人生的路上,跋涉了很久,當驀然回首,會發覺從前走過的每一段路、經歷過的每一段時光都是美好奇妙、獨一無二的。其實,不曾辜負走過的每一份光陰,就是生命最大的圓滿與無憾。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM