千家信息网

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

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章主要为大家展示了"如何使用springboot整合redis实现发送邮箱并验证",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用springb
千家信息网最后更新 2025年11月15日如何使用springboot整合redis实现发送邮箱并验证

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

1.起步

pom文件

                      org.springframework.boot            spring-boot-starter-redis            1.4.1.RELEASE                                    org.springframework.boot            spring-boot-starter-mail        

下面是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;@Componentpublic 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 **/@Configurationpublic class Redisconfig {    @Bean(name="redisTemplate")    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {        RedisTemplate template = new RedisTemplate<>();        RedisSerializer 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 **/@Controllerpublic class EmailController {    @Resource    private MailServiceUtils mailServiceUtils;    @Resource    private RedisTemplate 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.前端搭建

        Title     
接收方邮箱号 验证码

结果

以上是"如何使用springboot整合redis实现发送邮箱并验证"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0