使用QQ邮箱进行登录验证

使用场景不多说,接下来直接看实现~

登录到QQ邮箱,进入设置

打开IMAP/SMTP服务,记得把授权码记录下来,后面配置文件中需要用到

新建application的配置文件


spring:mail:# 指定邮件服务器地址host: smtp.qq.comusername: 你自己的qq邮箱
#    授权码password: QQ邮箱上获取的授权码信息
#    端口port: 465
#    默认编码default-encoding: UTF-8
#    使用协议protocol: smtps
#    其他属性properties:"mail.smtp.connectiontimeout": 5000"mail.smtp.timeout": 3000"mail.smtp.writetimeout": 5000"mail.smtp.auth": true"mail.smtp.starttls.enable": true"mail.smtp.starttls.required": true

先创建一个随机生成验证码的方法

package com.yinan.util;//随机生成6位邮箱验证码
public class EmailRandomUtil {public static String randomNumBuilder(){String result="";for(int i=0;i<6;i++){result+=Math.round(Math.random()*9);}return result;}
}

 接下来实现具体验证逻辑,我这里只做了简单的验证码认证 

public SaResult sendEmailToUser(HttpServletRequest request, String email) throws Exception {//        创建一个邮件消息MimeMessage message = javaMailSender.createMimeMessage();
//        创建 MimeMessageHelper 对象,第二个 boolean 参数表示,是否是一个 Multipart 邮件(带有附件)。MimeMessageHelper helper = new MimeMessageHelper(message, false);
//        发件人邮箱和名称helper.setFrom(emailUserName, "鹿灵");helper.setTo(email);
//        邮件标题helper.setSubject("这是银氨发送给您的登录验证码信息");try {String ip = request.getRemoteAddr();
//            生成验证码String code = EmailRandomUtil.randomNumBuilder();//        邮件正文helper.setText("您的验证码信息为:<strong>" + code + "</strong>,当前验证码有效时长为<strong>5分钟</strong>,请尽快进行登录验证,如非本人操作,请忽视!", true);System.out.println(code);ValueOperations<String, String> forValue = redisTemplate.opsForValue();
//将验证码信息存放在redis中,设置过期时间为5分钟后过期            
forValue.set(ip + "_code_"+email, code, 5, TimeUnit.MINUTES);//        发送javaMailSender.send(message);return SaResult.ok("邮件发送成功,ip信息为:" + ip);} catch (Exception e) {e.printStackTrace();return SaResult.error("发送失败");}}

以上代码均做有注释,各位可以看看,直接copy也可以,我获取的验证码信息是存在redis中的,所以记得要开redis

以下是redis的配置

  #  redis配置redis:#    redis数据库索引database: 0#    redis服务器地址host: localhost#    redis服务器连接端口port: 6379#    redis服务器连接密码password: 123#        连接超时时间(毫秒)timeout: 10slettuce:pool:# 连接池最大连接数max-active: 200# 连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms# 连接池中的最大空闲连接max-idle: 10# 连接池中的最小空闲连接min-idle: 0

运行后就可以看到你的邮箱中有验证码信息啦~

 以上就是所有功能的实现啦~

 

 

 

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

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

相关文章

ROS 2边学边练(31)-- 管理大工程

前言 往往现实中的工程都是会包含很多节点很多参数很多主题的那种&#xff0c;如果单独通过各种ros2 run命令进行启动管理&#xff0c;恐怕难以招架&#xff0c;主要还是通过launch文件的方式进行管理&#xff0c;而launch文件也可以像节点那样按功能的不同模块化&#xff0c;最…

【学习】黑盒测试用例设计方法都有哪些

在软件测试中&#xff0c;黑盒测试是一种重要的测试方法&#xff0c;它专注于软件的外部行为&#xff0c;而不关心其内部结构和实现。黑盒测试的目标是确保软件的功能符合需求规格说明书中的要求。为了有效地进行黑盒测试&#xff0c;需要设计合理的测试用例。本文将详细介绍黑…

RocketMQ的设计理念和目标

一、设计理念&#xff1a; RocketMQ设计基于主题的发布与订阅模式&#xff0c;其核心功能包括消息发送、消息存储&#xff08;broker&#xff09;、消息消费&#xff0c;整体设计追求简单与性能统一&#xff0c;主要体现在以下三个方面。 1.1、NameServer设计&#xff0c;摒弃…

excel文件预览: luckyexcel+luckysheet

luckyexcel 使用 npm i luckyexcel --saveluckysheet 使用 luckysheet文档 克隆Luckysheet源码到本地 git clone https://github.com/dream-num/Luckysheet.git安装依赖 npm install npm install gulp -g 开发 npm run dev打包 npm run build本地引入 npm run build 后 …

Ansible 连接受控端sudo超时

最近在装Ansible&#xff0c;有一台受控端负载重&#xff0c;响应慢。当用Ansible连接它时&#xff0c;总是提示超时。 现象 主控端 执行脚本 ansible 192.168.5.37 -m shell -a ip a| grep 192.168.192.168.5.37 | FAILED | rc-1 >> Timeout (12s) waiting for priv…

【Android】Activity task和Instrumentation杂谈

文章目录 activity taskInstrumentation机制参考 Android不仅可以装载众多的系统组件&#xff0c;还可以将它们跨进程组成ActivityTask&#xff0c;这个特性使得每个应用都不是孤立的。 activity task 从数据结构角度看&#xff0c;Task有先后之分&#xff0c;源码实现上采取了…

基于SpringBoot+Vue钢材销售管理系统的设计与实现

系统介绍 为了更好地发挥本系统的技术优势&#xff0c;根据钢材销售管理系统的需求&#xff0c;本文尝试以B/S经典设计模式中的Spring Boot框架&#xff0c;JAVA语言为基础&#xff0c;通过必要的编码处理、钢材销售管理系统整体框架、功能服务多样化和有效性的高级经验和技术…

高级IO简介

一、非阻塞IO 阻塞其实就是进入了休眠状态&#xff0c;交出了 CPU 控制权。 普通文件的读写操作是不会阻塞的&#xff0c;不管读写多少个字节数据&#xff0c; read() 或 write() 一定会在有限的时间内返回&#xff0c;所以普通文件一定是以非阻塞的方式进行 I/O 操作&…

【Visual Studio 2012中文版】下载安装以及使用方法

文章目录 前言一、下载安装包二、安装步骤1.双击VS2012_ULT_chs.iso文件打开2.双击vs_ultimate.exe打开安装程序3.选择要安装的功能4.软件正在安装&#xff0c;请耐心等待10分钟5.安装成功&#xff0c;点击“启动”6.激活码&#xff08;产品密钥&#xff09; 三、VS2012使用&am…

CRMEB Pro版营销功能规则解读

现在&#xff0c;无论是中小型企业拓宽渠道&#xff0c;还是传统企业转型&#xff0c;基本都在考虑布局线上&#xff0c;做微商城是一大趋势&#xff0c;相比传统第三方电商平台&#xff0c;独立部署的商城系统自主性更强&#xff0c;功能开发也更灵活。其中&#xff0c;作为电…

Java基础----字节流和字符流

1.使用字节流拷贝文件夹 import java.io.*;public class Tset01 {public static void main(String[] args) throws IOException {//拷贝一个文件夹&#xff0c;考虑子文件夹//E:\hello -> E:\aaaFile srcnew File("E:\\hello");File destnew File("E:\\dest…

英语写作中available容易忽略的用法

Available 的一般用法没有问题&#xff0c;但它的下面用法容易被我们忽略。 比较下面两句&#xff1a; There is no water. There is no water available. 这两句都翻译为“没有水”&#xff0c;但上一句的意思就是“没有水”&#xff0c;而下一句意味着“需要水但没有水”…

vue3 -- 项目使用自定义字体font-family

在Vue 3项目中使用自定义字体(font-family)的方法与在普通的HTML/CSS项目中类似。可以按照以下步骤进行操作: 引入字体文件: 首先,确保你的字体文件(通常是.woff、.woff2、.ttf等格式)位于项目中的某个目录下,比如src/assets/font/。 在全局样式中定义字体: 在你的全局…

[阅读笔记25][WebArena]A Realistic Web Environment for Building Autonomous Agents

这篇论文提出了WebArena这个环境与测试基准&#xff0c;在24年1月发表。 之前的agent都是在一些简化过的合成环境中测试的&#xff0c;这会导致与现实场景脱节。这篇论文构建了一个高度逼真、可复现的环境。该环境涉及四个领域&#xff1a;电子商务、论坛讨论、软件开发和内容管…

多种情况下合并单元格(S-Table+Vue3)

合并单元格(S-TableVue3) 跨行合并&#xff1a;rowspan“合并单元格的个数” 跨列合并&#xff1a;colspan"“合并单元格的个数” 文章目录 合并单元格(S-TableVue3)第一列跨行合并单元格templatescript效果 多列跨行合并单元格templatescript效果图 多行合并可参考 第一列…

exceljs库实现excel表样式定制化

概览 xlsx 是前端最热门的 Excel 导出方案&#xff0c;又叫做 SheetJs&#xff0c;默认不支持修改 Excel 的样式。而exceljs库就可以做到自定义excel表样式&#xff0c;下面来介绍一下其使用方法 一. 完整示例 代码示例 const exportTemplate2 () > { // 创建工作簿 …

Electron桌面应用开发:从入门到发布全流程解析

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;HTML、CSS和JavaScript&#xff09;来创建跨平台的桌面应用程序。在本文中&#xff0c;我们将深入探讨Electron桌面应用程序开发的全流程&#xff0c;从入门到发布。 安装和配置Elec…

iOS ------ Block的总结

前面看了Block的基本知识&#xff0c;和一些源码。但对于block怎么用的还不了解&#xff0c;代码中出现block会看不懂&#xff0c;现在来具体看一下Block的用法并做个总结。 1.Block是什么 block对象是一个C语言结构体&#xff0c;可以并入C和OC的代码中&#xff0c;Block本质…

探索以太坊世界:使用Geth打造你的私人网络

文章目录 概要名词解释Geth&#xff08;Go Ethereum&#xff09;区块链网络种类 具体流程下载geth客户端配置私链新建创世区块启动私链 连接MetaMask钱包小结 概要 在区块链领域&#xff0c;以太坊私链的搭建是学习和开发智能合约的重要一步。私链允许开发者在独立的环境中进行…

地图图源#ESRI ArcGIS XYZ Tiles系列(TMS)

目录 1、前言 2、地图图源网址 2.1、Satellite 卫星图源 2.2、Terrain 地形图源 2.3、Street 路网/标注图源 2.4、Specifity 特色设计图源 3、专业推荐”穿搭“ 4、图源配置下载及使用 图源名称图层类别特别注意谷歌 Google①地形 ②影像 ③矢量及标注 ④特色图源国内大…