SpringBoot实现 QQ邮箱验证码

SpringBoot实现 QQ邮箱验证码

文章目录

  • SpringBoot实现 QQ邮箱验证码
    • 一、开通SMTP校验码
      • 1.登录qq邮箱
      • 2.开启SMTP服务
      • 3.发送手机短信
      • 4.得到授权码
    • 二、回到spring项目中
      • 1.导入所需依赖
      • 2.验证码工具类
      • 3.具体实现逻辑(serviceimpl)
    • 三、测试qq邮箱验证码

一、开通SMTP校验码

1.登录qq邮箱

在这里插入图片描述

2.开启SMTP服务

在这里插入图片描述

3.发送手机短信

在这里插入图片描述

4.得到授权码

在这里插入图片描述

二、回到spring项目中

1.导入所需依赖

 <!--邮箱验证登录导入的依赖--><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-email</artifactId><version>1.4</version></dependency><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.1</version></dependency><dependency><groupId>io.github.openfeign</groupId><artifactId>feign-core</artifactId></dependency>

2.验证码工具类


/*** QQ邮箱* 随机生成验证码工具类*/
public class ValidateCodeUtils {/*** 随机生成验证码* @param length 长度为4位或者6位* @return*/
//    public static Integer generateValidateCode(int length){
//        Integer code =null;
//        if(length == 4){
//            code = new Random().nextInt(9999);//生成随机数,最大为9999
//            if(code < 1000){
//                code = code + 1000;//保证随机数为4位数字
//            }
//        }else if(length == 6){
//            code = new Random().nextInt(999999);//生成随机数,最大为999999
//            if(code < 100000){
//                code = code + 100000;//保证随机数为6位数字
//            }
//        }else{
//            throw new RuntimeException("只能生成4位或6位数字验证码");
//        }
//        return code;
//    }/*** 随机生成大小写字母和数字的验证码* @return 6位随机验证码*/public static String generateValidateCode(int length) {String code = "";Random random = new Random();for (int i = 0; i < length; i++) {int type = random.nextInt(3);//随机生成数字、大写字母、小写字母switch (type) {case 0:code += (char) (random.nextInt(10) + '0');//数字break;case 1:code += (char) (random.nextInt(26) + 'A');//大写字母break;case 2:code += (char) (random.nextInt(26) + 'a');//小写字母break;}}return code;}/*** 随机生成指定长度字符串验证码* @param length 长度* @return*/public static String generateValidateCode4String(int length){Random rdm = new Random();String hash1 = Integer.toHexString(rdm.nextInt());String capstr = hash1.substring(0, length);return capstr;}
}

/*** 邮箱对应发送信息*/
public class EmailUtil {/*** @param email 发送的邮箱,就是登录时你填的邮箱* @param authCode 填写第一个工具类的随机生成的验证码*/public static void sendAuthCodeEmail(String email, String authCode) {try {SimpleEmail mail = new SimpleEmail();mail.setHostName("smtp.qq.com");//发送邮件的服务器,这个是qq邮箱的,不用修改mail.setAuthentication("xxx@qq.com", "xxx");//第一个参数一般是自己的邮箱第二个参数就是SMTP的授权码,我们上面获取过了mail.setFrom("xxx@qq.com","xxx");  //读一个参数是发送邮件的邮箱,第二个是发件人姓名mail.setSSLOnConnect(true); //使用安全链接mail.addTo(email);//接收的邮箱mail.setSubject("xxx验证码");//设置邮件的主题mail.setMsg("尊敬的用户您好,\n\n感谢您选择我们的服务!您的登录验证码为:"+"["+authCode+"]"+",请妥善保管。请注意,该验证码仅在三分钟内有效,请尽快使用。\n\n若有任何疑问,请随时联系我们。祝您生活愉快");//设置邮件的内容mail.send();//发送} catch (EmailException e) {e.printStackTrace();}}
}

3.具体实现逻辑(serviceimpl)

 	 /*** qq邮箱验证码* @param msg* @return*/@Overridepublic ResponseResult sendEmail(String msg) {//校验msg是否为空if(StringUtils.isNotEmpty(msg)){//不为空则生成随机验证码String code = ValidateCodeUtils.generateValidateCode(6).toString();//生成长度为6的验证码logger.info("验证码code:" + code);//调用直接封装的qq邮箱发送邮箱EmailUtil.sendAuthCodeEmail(msg,code);//把code存放到redis中3分钟redisTemplate.opsForValue().set(msg , code,3, TimeUnit.MINUTES);//键 值 时间 单位return new ResponseResult(200,"发送成功",code);}return new ResponseResult(410,"发送失败",null);}

三、测试qq邮箱验证码

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/701323.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper集群部署以及zookeeper原理

文章目录 简介工作原理特性官网地址准备节点准备环境准备JAVA主机映射 部署 简介 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服…

Codeforces Round 944 (Div. 4)(A,B,C,D,E,F,G,H)

比赛链接 这场不难&#xff0c; G G G 和 H H H 比较有意思。 G G G 题需要一定的二进制和数据结构的知识&#xff0c; H H H 题是个 2 − s a t 2-sat 2−sat 的题&#xff0c;算法名字吓人但是其实很简单&#xff0c;题目本身也很板&#xff0c;建议趁机学习一波。 A. My …

棒材直线度测量仪 专为圆形产品研发设计 在线无损检测

棒材直线度测量仪采用了先进的技术&#xff0c;能够实现在线无损检测&#xff0c;为生产过程提供了极大的便利。专为圆形产品设计&#xff0c;它能够精确测量棒材的米直线度及外径、椭圆度尺寸&#xff0c;为质量控制提供可靠的数据支持。 在线直线度测量仪不仅具有出色的性能…

Stm32串口搭配DMA实现自定义printf、scanf

前言:本文仅供学习参考使用&#xff0c;主要目的是让大家快速使用串口调试&#xff0c;文章所提及的GCC适用于Clion&#xff0c;Vscode等第三方编辑器的用户。作者有时间会继续更新^_^ 一、GCC环境 1、标准库 (1)、使用方法 在主函数while(1)初始化中&#xff0c;添加Seria…

嵌入式学习-M4的基本定时器

基本介绍 框图分析 时钟选择 计数器结构 开启重装载值寄存器的影子寄存器的工作时序图 未开启重装载值寄存器的影子寄存器的工作时序图 更新事件以及中断 相关寄存器 相关库函数

全球排名第一的质量管理(QMS)系统介绍,100%免费开源

什么是Odoo全程质量管理&#xff1f; 开源智造Odoo免费开源质量管理系统将政策、标准和实践规范化并自动化&#xff0c;以最小的开销提供最高质量的产品。快速轻松地选择要执行的测试&#xff0c;设置参数以评估结果&#xff0c;并定义接收时和生产过程中的测试策略。Odoo会自动…

OpenNJet产品体验:探索无限可能

文章目录 前言一、OpenNJet是什么&#xff1f;二、OpenNJet特性和优点三、OpenNJet功能规划四、OpenNJet快速上手五、OpenNJet的使用总结 前言 现代社会网络高速发展&#xff0c;同时也迎来了互联网发展的高峰&#xff0c;OpenNJet作为一个基于NGINX的面向互联网和云原生应用提…

网络安全等级保护测评指标解读(2.0)

网络安全等级保护2.0测评指标解读&#xff1a; 1、物理和环境安全 2、网络和通信安全 3、设备和计算安全 4、应用和数据安全 5、安全策略和管理制度 6、安全管理机构和人员 7、安全建设管理 8、安全运维管理 软件资料清单列表部分文档&#xff1a; 工作安排任务书&#xff0c;…

HCIA和HCIP区别大吗?小白请看这

华为认证以其专业性和实用性受到了业界的广泛认可。 HCIA、HCIP、HCIP这三个级别&#xff0c;你会选哪个&#xff1f;IE含金量不用多说&#xff0c;IA还是IP&#xff0c;你会纠结吗。 但面对这两个级别的认证&#xff0c;初学者或者“小白”们可能会感到困惑&#xff1a;两者…

python “名称空间和作用域” 以及 “模块的导入和使用”

七、名称空间和作用域 可以简单理解为存放变量名和变量值之间绑定关系的地方。 1、名称空间 在 Python 中有各种各样的名称空间&#xff1a; 全局名称空间&#xff1a;每个程序的主要部分定义了全局的变量名和变量值的对应关系&#xff0c;这样就叫做全局名称空间 局部名称…

Ajax额

原生Ajax xml 已被json取代 http 请求方法urlhttp版本号 network 谷歌浏览器查看请求报文和响应报文 F12 network header里面有 请求头 响应头 点击view source 可以查看请求响应行 请求体在请求行头下面 get请求有url参数&#xff0c;请求体变为query String…

基于springboot实现的家具销售电商平台

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…