这篇文章主要为大家展示了“如何使用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;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;@Componentpublic class MailServiceUtils{ private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JavaMailSender mailSender; 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;@Configurationpublic 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;@Controllerpublic class EmailController { @Resource private MailServiceUtils mailServiceUtils; @Resource private RedisTemplate<String, Object> redisTemplate; @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"; } @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实现发送邮箱并验证”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!