新西兰服务器

如何使用springboot整合redis实现发送邮箱并验证


如何使用springboot整合redis实现发送邮箱并验证

发布时间:2022-01-03 09:49:15 来源:高防服务器网 阅读:73 作者:小新 栏目:开发技术

这篇文章主要为大家展示了“如何使用springboot整合redis实现发送邮箱并验证”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用springboot整合redis实现发送邮箱并验证”这篇文章吧。

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邮箱开通一下

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="../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实现发送邮箱并验证”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注高防服务器网行业资讯频道!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[