SpringBoot实现邮箱验证码
自行创建一个SpringBoot项目
导入SpringBoot所需要的邮箱验证码的包
<!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version></dependency>
定义邮箱验证码所需要的配置
找到application.properties然后将下面的配置输入进去
接下来用户的账号是需要填充你自己的qq邮箱号
password填充的是你的邮箱配置生成的授权码,具体授权码应该如何生成,请看下面的详细配置 --------------------------------邮箱授权码配置下方有详细教程,请仔细观看
#发送邮件配置相关
# 配置邮件服务器的地址 smtp.qq.com
spring.mail.host=smtp.qq.com
# 配置邮件服务器的端口(465或587)
spring.mail.port=465
# 配置用户的账号
spring.mail.username=XXX
# 配置用户的密码
spring.mail.password=XXX
# 配置默认编码
spring.mail.default-encoding=UTF-8
邮箱授权码配置
- 登录邮箱
- 点击获取授权码,进入之后,接下来的步骤你应该一看就懂了
接下来开始写代码
创建AppConfig文件,目的是为了找到发送方的qq邮箱,也就是之前在配置文件里面配置的
package com.easypan.entity.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component("appConfig")
public class AppConfig {@Value("${spring.mail.username}")private String sendUsername;public String getSendUsername() {return sendUsername;}
}
//导入bean@Resourceprivate JavaMailSender javaMailSender;@Resourceprivate AppConfig appConfig;
/*** 发送邮箱验证码的功能* @param toEmail* @param code*/private void sendEmailCode(String toEmail,String code){try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message,true);helper.setFrom(appConfig.getSendUsername());helper.setTo(toEmail);helper.setSubject("你的项目发送的主标题");helper.setText("<div style=\"background-color: #f0f0f0; padding: 20px;\">\n" +" <h1 style=\"color: #800000;\">你的项目名称</h1>\n" +" <p style=\"color: #800000;\">尊敬的用户,您的短信验证码为:<span style=\"color: black; font-weight: bold;\">"+code+"</span></p>\n" +" <p style=\"color: #800000;\">该验证码用于注册账号或者修改密码,有效期为5分钟。</p>\n" +" <p style=\"color: #800000;\">请勿泄露和转发此验证码,以保障您的账号安全。</p>\n" +" <p style=\"color: #800000;\">如非您本人操作,请忽略此邮件。</p>\n" +"</div></p>");helper.setSentDate(new Date());javaMailSender.send(message);} catch (MessagingException e) {logger.error("邮件发送失败");throw new BusinessException("邮件发送失败");}}
接下来验证码发送成功
相关文章:

SpringBoot实现邮箱验证码
自行创建一个SpringBoot项目 导入SpringBoot所需要的邮箱验证码的包 <!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…...

GPT提示词技巧,使用教程,国内版官网直达,非套壳
GPT提示词技巧,使用教程,国内版官网直达,非套壳 主站点:https://chatgpt-plus.top(江苏福建地区打不开,需要魔法) 店铺地址:https://buy.chatgpt-plus.top/ 选择plus账号进入&…...

MySQL多表关联查询习题
一、素材 -- Active: 1714203732007127.0.0.13306db_stu -- 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); -- 创建…...

Android正向开发实现客户端证书认证
前言 如果第三方模块被混淆,那hook方式均不能生效。这时就需要根据系统包去定位校验的函数,因此需要对安卓开发者是如何实现客户端证书校验的有一定了解,接下来就介绍这部分内容。 开发者实现客户端证书校验的本质是:证书/密钥 + 代码。 在形式上有:证书校验、公钥校验和…...
【Kubernetes】Pod无法访问Service域名问题排查
背景 部署过多套k8s集群,发现在其中一套k8s环境中,在Pod内无法访问Service Name,访问了很多次,偶尔又能通,使用Service的IP能正常访问,域名解析的问题基本确定与CoreDNS有关系,于是开始了一系列…...

【JAVA基础之网络编程】UDP和TCP协议以及三次握手和四次挥手的过程
🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1. 网络编程 1.1 概述 1.2 网络编程的三要素 1.2.1 IP地址 1.2.2 InetAddress 1.2.3 端口和协议 1.3 UDP协议 1.3.1 UDP发送数据 1.3.2 UDP接收数据 1.4…...
基于python+Django大数据的电影市场预测分析系统设计与实现
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
消息传递与集成:使用Springboot进行异步通信
消息传递与集成:使用Spring Boot进行异步通信 在现代的分布式系统中,异步通信已经成为了一种常见的设计模式。通过使用消息队列和事件驱动架构,我们可以实现系统之间的解耦,提高系统的可扩展性和可靠性。本文将介绍如何使用Sprin…...

【论文速读】Transformer:Attention Is All You Need
Transformer:Attention Is All You Need 摘要模型架构注意力模型Scaled Dot-ProductMulti-Head Attention Position-wise Feed-Forward NetworksEmbeddings and SoftmaxPositional Encoding 摘要 我们提出了一种新的简单的网络架构,Transformer…...

小短片创作-组装场景(一)
1、项目基础设置 通过第三人称模板,创建1个项目 1.自动曝光:关闭,因为要做专业的小短片,曝光需要手动控制。 2.扩展自动曝光中的默认亮度范围:启用 3.全局光照系统:选择屏幕空间光照(SSGI&am…...

二元关系表示
一、二元关系的定义和表示 什么是二元关系?对集合A和B,A\timesB的任意子集R为A到B的一个二元关系。当AB时,A\timesA的任一子集R称为A上的一个二元关系。在不引起误解的情况下,二元关系可简称关系。 若|A|m,|B|n,则A到…...
Android Audio基础——AudioFlinger音频流管理(八)
从前面 AudioTrack、PlaybackThread、输出流设备三者的关系中,我们看到 AudioTrack 把音频流数据送入到对应的 PlaybackThread 中,那么应用进程是如何控制音频流的开始播放 start()、停止播放 stop()、暂停播放 pause()。这一章节我们就来继续分析。 一、音频流管理 应用进程…...

二进制部署k8s集群 部署高可用master节点
目录 本次部署的环境 一、master02 节点部署 二、负载均衡部署 安装nginx服务 部署keepalive服务 修改node节点上的配置文件 在master节点上创建pod 三、部署 Dashboard 二进制部署k8s集群部署的步骤总结 (1)k8s的数据存储中中心的搭建 etcd &…...
linux创建私有docker仓库以及推拉
创建私有仓库: 1.下载 registry镜像。 2.执行 registry 镜像(#为注释内容,\为换行): docker run -d \# --restartalways每次都是开机自动启动--restartalways \# --name registry 表示容器名--name registry \# 表示…...

如何将照片从 iPhone 传输到闪存驱动器【无质量损坏】
概括 人们喜欢用 iPhone 拍照,因为照片通常都很漂亮,这都要归功于 iPhone 令人惊叹的技术。但照片更新后会占用更多空间,并且您可能会开始收到没有存储空间的通知。因此,您可以将照片传输到 USB 驱动器,然后从 iPhone…...
【MySQL精通之路】InnoDB(7)-锁和事务模型(2)-事务模型
主博客: 【MySQL精通之路】InnoDB(7)-锁和事务模型-CSDN博客 上一篇: 【MySQL精通之路】InnoDB(7)-锁和事务模型(1)-锁-CSDN博客 下一篇: 目录 1.事务隔离级别 2.1 可重复读 2.2 读已提交 2.3 读取未提交 2.4 序列化读 2.自动提交、…...
python中的可哈希和不可哈希
python 中的每一个对象都有一个哈希值,哈希值是一个固定长度的整数,它通常用于快速比较对象的相等性。 如果在对象的生命周期里该对象的哈希值从未改变,那么这个对象是可哈希的(hashable),也称为不可变的。…...
docker命令详解大全
Docker是一种流行的容器化平台,用于快速部署应用程序并管理容器的生命周期。以下是一些常用的Docker命令及其用途的概述: docker run:创建一个新容器并运行一个命令。docker ps:列出当前运行的容器。docker stop:停止…...

体检系统商业源码,C/S架构的医院体检系统源码,大型健康体检中心管理系统源码
体检系统商业源码,C/S架构的医院体检系统源码,大型健康体检中心管理系统源码 体检信息管理系统软件是对医院体检中心进行系统化和规范化的管理。系统从检前,检中,检后整个业务流程提供标准化以及精细化的解决方案。实现体检业务市…...

Vue CLI 的服务介绍与使用(2024-05-20)
1、介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 vue/cli 实现的交互式的项目脚手架。 通过 vue/cli vue/cli-service-global 实现的零配置原型开发。 一个运行时依赖 (vue/cli-service),该依赖: 可升级…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...