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实现发送邮箱并验证的文章就介绍到这了,更多相关springboot redis发送邮箱内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!