文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-22 07:48

关注

这篇文章主要为大家展示了“如何使用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邮箱开通一下

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

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实现发送邮箱并验证

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯