目录
  • 1.起步
  • 2.工具类
    • 邮箱工具类
    • redis乱码解决
  • 3.controller搭建
    • 4.前端搭建
      • 结果
        • 总结

          1.起步

          pom文件

            <!--集成redis-->
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-redis</artifactId>
                      <version>1.4.1.RELEASE</version>
                  </dependency>
                  <!--邮箱-->
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-mail</artifactId>
                  </dependency>
          

          下面是yml配置

          #设置端口号
          server:
            port: 8080
          #配置数据源
          spring:
            mail:
              #QQ邮箱这不用改
              host: smtp.qq.com
              #你的邮箱
              username: XX@qq.com
              #你的授权码
              password: XXXXXX
              default-encoding: UTF-8
            redis:
              #redis服务器地址
              host: XXXXXX
              #Redis服务器连接端口
              port: 6379
              #Redis服务器连接密码(默认为空)
              password: XXX
              jedis:
                pool:
                  #连接池最大阻塞等待时间(使用负值表示没有限制)
                  max-wait: 1000
                  #连接池最大连接数(使用负值表示没有限制)
                  max-active: 100
                  #连接池中的最大空闲连接
                  max-idle: 20
                  #连接池中的最小空闲连接
                  min-idle: 0
                  #连接超时时间(毫秒)
              timeout: 30000
          
          邮箱授权码不知道的话QQ邮箱开通一下
          

          springboot整合redis实现发送邮箱并验证

          2.工具类

          邮箱工具类

          package com.example.demo.util;
          
          /**
           * @Classname MailServiceUtils
           * @Description TODO
           * @Author 86176
           * @Date 2021-12-17 15:04
           * @Version 1.0
           **/
          import org.slf4j.Logger;
          import org.slf4j.LoggerFactory;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.mail.MailException;
          import org.springframework.mail.SimpleMailMessage;
          import org.springframework.mail.javamail.JavaMailSender;
          import org.springframework.stereotype.Component;
          @Component
          public class MailServiceUtils{
              private final Logger logger = LoggerFactory.getLogger(this.getClass());
              @Autowired
              private JavaMailSender mailSender;
              /**
               * @param from 发送人
               * @param to 接收人
               * @param subject 主题
               * @param content 内容
               */
              public void sendMail(String from,String to, String subject, String content){
                  SimpleMailMessage message = new SimpleMailMessage();
                  message.setFrom(from);
                  message.setTo(to);
                  message.setSubject(subject);
                  message.setText(content);
                  try {
                      mailSender.send(message); logger.info("邮件成功发送!");
                  } catch (MailException e) {
                      logger.error("发送邮件错误:",e);
                  }
              }
          }
          
          

          redis乱码解决

          package com.example.demo.config;
          
          import org.springframework.context.annotation.Bean;
          import org.springframework.context.annotation.Configuration;
          import org.springframework.data.redis.connection.RedisConnectionFactory;
          import org.springframework.data.redis.core.RedisTemplate;
          import org.springframework.data.redis.serializer.RedisSerializer;
          import org.springframework.data.redis.serializer.StringRedisSerializer;
          
          /**
           * @Classname Redisconfig
           * @Description TODO
           * @Author 86176
           * @Date 2021-12-06 10:02
           * @Version 1.0
           **/
          @Configuration
          public class Redisconfig {
          
          
              @Bean(name="redisTemplate")
              public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
                  RedisTemplate<String, String> template = new RedisTemplate<>();
                  RedisSerializer<String> redisSerializer = new StringRedisSerializer();
                  template.setConnectionFactory(factory);
                  //key序列化方式
                  template.setKeySerializer(redisSerializer);
                  //value序列化
                  template.setValueSerializer(redisSerializer);
                  //value hashmap序列化
                  template.setHashValueSerializer(redisSerializer);
                  //key haspmap序列化
                  template.setHashKeySerializer(redisSerializer);
                  //
                  return template;
              }
          }
          
          

          3.controller搭建

          按要求更改

          package com.example.demo.controller;
          
          import com.example.demo.util.MailServiceUtils;
          import org.springframework.data.redis.core.RedisTemplate;
          import org.springframework.scheduling.annotation.Async;
          import org.springframework.stereotype.Controller;
          import org.springframework.util.Assert;
          import org.springframework.web.bind.annotation.PostMapping;
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.ResponseBody;
          
          import javax.annotation.Resource;
          
          /**
           * @Classname EmailController
           * @Description TODO  邮箱发送
           * @Author 86176
           * @Date 2021-12-17 15:28
           * @Version 1.0
           **/
          @Controller
          public class EmailController {
          
              @Resource
              private MailServiceUtils mailServiceUtils;
          
              @Resource
              private RedisTemplate<String, Object> redisTemplate;
          
              /**
               * 发送验证码 redis存储验证码
               * @param to 被发送的邮箱账号
               * @return
               */
              @PostMapping("/fasong")
              @ResponseBody
              public String email(String to) {
                  try {
                      //生成6位随机数
                      String i = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
                      //发送邮箱
                      mailServiceUtils.sendMail("XXXXXX@qq.com", to, "验证码", i);
                      //redis保存验证码
                      redisTemplate.opsForValue().set(to, i);
                  } catch (Exception e) {
                      return "报错";
                  }
                  return "OK";
              }
          
              /**
               * 邮箱验证
               * @param to 被发送的邮箱账号
               * @param yzm 输入的验证码判断
               * @return
               */
              @PostMapping("/yz")
              @ResponseBody
              public String yz(String to, String yzm) {
                  //根据邮箱帐号取出验证码
                  String o = (String) redisTemplate.opsForValue().get(to);
                  if (o.equals(yzm)){
                      return "OK";
                  }
                  return "No";
              }
          
              @RequestMapping("/abc")
              public String abc() {
                  return "QQemail";
              }
          }
          
          

          4.前端搭建

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          </head>
          <body>
               <div>
                   接收方邮箱号 <input type="text" id="to">
                   <input type="button" value="发送验证码" id="yzm">
                   验证码<input type="text" id="yz">
                   <input type="submit" value="验证" id="y">
               </div>
          <script type="text/javascript"  src="https://www.freexyz.cn/static/jquery-1.8.3.js"></script>
          <script>
              /**
               * 发送验证码
               */
              $("#yzm").click(function() {
                  $.ajax({
                      url : "/fasong",
                      type : "post",
                      data : {
                          "to":$("#to").val()
                      },
                      success : function(data) {
                          alert(data)
                      }
                  })
              })
              /**
               * 验证码判断
               */
              $("#y").click(function() {
                  $.ajax({
                      url: "/yz",
                      type: "post",
                      data: {
                          "to": $("#to").val(),
                          "yzm": $("#yz").val()
                      },
                      success: function (data) {
                          alert(data)
                      }
                  })
              })
          </script>
          </body>
          </html>
          

          结果

          springboot整合redis实现发送邮箱并验证

          springboot整合redis实现发送邮箱并验证

          总结

          声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。