springboot整合redis实现发送邮箱并验证
目录
- 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邮箱开通一下
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发送邮箱内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)