zoukankan      html  css  js  c++  java
  • 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

    人生的路上,跋涉了很久,当蓦然回首,会发觉从前走过的每一段路、经历过的每一段时光都是美好奇妙、独一无二的。其实,不曾辜负走过的每一份光阴,就是生命最大的圆满与无憾。

      

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/jichuang/p/8043732.html
Copyright © 2011-2022 走看看