springboot redis发送邮箱
馬牛B 人气:01.起步
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>
结果
总结
加载全部内容