springboot实现发送邮箱验证码

准备工作

在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件

这里以网易163邮箱为例,登录邮箱后,依次点击“设置-POP3/SMTP/IMAP” ,然后开启SMTP服务。这时候会提示一个授权码,例如:HMASDWFASCZSMTAS,一定要记下来,一会会用到


实现步骤 

第一步、在pom.xml中添加邮箱依赖

        <!-- 邮箱验证码依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

第二步、在application.yml中配置邮箱连接信息

spring:mail:#smtp服务主机  qq邮箱则为smtp.qq.com;163邮箱是smtp.163.comhost: smtp.163.com#服务协议protocol: smtp# 编码集default-encoding: UTF-8#发送邮件的账户username: ************@163.com#授权码password: ****************test-connection: trueproperties:mail:smtp:auth: truestarttls:enable: truerequired: true

第三步、新建一个工具类,用于生成6位数的随机数

/*** 字符处理工具*/
public class CharUtil {/*** 随机数6位生成* @return*/public static String randomVerify () {Random random = new Random();String result = "";for (int i=0; i<6; i++){result += random.nextInt(10);}return result;}
}

第四步、新建一个controller接口类(核心)即可实现发送邮件

@RestController
@RequestMapping("/mail")
public class MailVerifyController {@Autowiredprivate JavaMailSender mailSender;//	获得发件人信息@Value("${spring.mail.username}")private String from;/*** 发送邮件验证码* @param mail 发送的邮箱* @return*/@PostMapping("/send")public Result save(@RequestParam String mail) {// 获取随机6位验证码String verify = CharUtil.randomVerify();SimpleMailMessage message = new SimpleMailMessage();// 发送邮箱message.setFrom(from);// 接受邮箱message.setTo(mail);// 标题message.setSubject("测试服务平台-邮箱验证");// 内容message.setText("<h1>尊敬的用户您好:</h1><br>" +"<h5> 您正在进行邮箱验证,本次验证码为:<span style='color:#ec0808;font-size: 20px;'>" + verify + "</span>,请在10分钟内进行使用。</h5>" +"<h5>如非本人操作,请忽略此邮件,由此给您带来的不便请谅解!</h5> <h5 style='text-align: right;'>--测试服务平台</h5>");try{// 发送邮件mailSender.send(message);return Result.success(200,"验证码发送成功");} catch (Exception e) {return Result.success(404,"验证码系统发送失败,请检查邮箱账号是否正确!",e);}}}

效果图 

 

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

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

相关文章

全流程ARCGIS Pro技术应用教程

详情点击公众号链接&#xff1a;全流程ARCGIS Pro技术应用教程 前沿 GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关…

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1(HiDataPlus)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

Matlab中(:,1)和(:,end)和[~, A]的含义与用法

背景 阅读Moses Chong-ook Nah的DMP-MATLAB程序记录。 github链接&#xff1a;https://github.com/mosesnah-shared/DMP-MATLAB 如果不知道某个函数或变量的作用&#xff0c;直接打印出来&#xff0c;看看输出是什么。不知道matlab如何打印&#xff1f;程序后面的分号;去掉就…

Day1-DeepWalk

论文《DeepWalk: Online Learning of Social Representations》 2014年发表在数据挖掘顶会ACM SIGKDD&#xff08;KDD&#xff09;上的论文 目的&#xff1a;学习节点表示 推动&#xff1a;将自然语言处理里面的无监督学习方法迁移至此 思路&#xff1a;将图结构序列化&#x…

深入电机控制基础知识(1)- 磁共能与电磁转矩

1.1 概述 打开任意一本电机学的教材&#xff0c;翻到电机基本概念的说明的位置&#xff0c;总能看到一句描述电机本质的话&#xff1a;电机是一种机电能量转化的装置。 机电能量转化&#xff0c;很生动形象的说明电机的工作原理。对于电动机而言&#xff0c;吸收电能&#xff…

优思学院|如何解读Minitab中测量系统分析(MSA GRR)的结果?

在现代制造和质量控制过程中&#xff0c;精确的测量是至关重要的。为了确保我们的测量工具可靠&#xff0c;我们需要评估其重复性与再现性。这就是测量系统分析&#xff08;Measurement System Analysis&#xff0c;简称MSA&#xff09;的关键目标之一。以下将介绍如何使用Mini…

前端进阶--深入理解JavaScript

1、JS的作用域和作用域链 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问&#xff0c;通过作用域链&#xff0c;我们可以访问到外层环境的变量和函数。作用域链的本质上是一个指向变量对象的指针列表。变量对象是一个包含了执行环境中所有变量和函数的对象…

IDEA下使用Spring MVC

<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…

【GO】LGTM_Grafana_gozero_配置trace(4)_代码实操及追踪

最近在尝试用 LGTM 来实现 Go 微服务的可观测性&#xff0c;就顺便整理一下文档。 Tempo 会分为 4 篇文章&#xff1a; Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架发送数据到 tempo 本文就是写一下如何在 go-zero 微服务框架里面配置 t…

暗月中秋靶场活动writeup

前言 暗月在中秋节搞了个靶场活动&#xff0c;一共有4个flag&#xff0c;本着增长经验的想法参加了本次活动&#xff0c;最终在活动结束的时候拿到了3个flag&#xff0c;后面看了其他人的wp也复现拿到第四个flag。过程比较曲折&#xff0c;所以记录一下。 靶场地址 103.108.…

Chinese-LLaMA-AIpaca

文章目录 关于 Chinese-LLaMA-Alpaca一、LLaMA模型 --> HF格式二、合并LoRA权重,生成全量模型权重方式1:单LoRA权重合并方式2:多LoRA权重合并(适用于Chinese-Alpaca-Plus )三、使用 Transformers 进行推理四、使用 webui 搭建界面1、克隆text-generation-webui并安装必…

基础排序算法

插入排序&#xff08;insertion sort&#xff09; 插入排序每次循环将一个元素放置在适当的位置。像抓牌一样。手里的排是有序的&#xff0c;新拿一张牌&#xff0c;与手里的牌进行比较将其放在合适的位置。 插入排序要将待排序的数据分成两部分&#xff0c;一部分有序&#…

Leetcode 409. 最长回文串

文章目录 题目代码&#xff08;9.24 首刷自解&#xff09; 题目 Leetcode 409. 最长回文串 代码&#xff08;9.24 首刷自解&#xff09; class Solution { public:int longestPalindrome(string s) {unordered_map<char, int> mp;for(char c : s) mp[c];int res 0;int…

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是 Selenium 吗&#xff1f;你知道为什么要使用它吗&#xff1f;答案就在本文中&#xff0c;很高兴能够与你共飧。 自动化测试正席卷全球&#xff0c;Selenium 认证是业界最抢手的技能之一。 什么是 Selenium&#xff1f; Selenium 是一种开源工具&#xff0c;用于…

2023蓝帽杯半决赛misc题目复现

后续会逐渐完善&#xff1a; misc--排排坐吃果果 我真是无大语了&#xff0c;对于我的死脑筋&#xff0c;文件一打开是一片白色&#xff0c;但是点开单元格会看到里面有数字&#xff0c;我想到了修改单元格的格式&#xff0c;就是没想到转换字体的颜色&#xff0c;对此我表示…

阿里云ESS弹性伸缩核心概念与基本使用

文章目录 1.ESS弹性伸缩基本概念1.1.弹性伸缩概念1.2.弹性伸缩应用场景1.3.弹性伸缩的应用模式 2.开通ESS弹性伸缩服务3.为KodCloud云盘集群创建弹性伸缩组3.1.创建伸缩组3.2.设置伸缩组的名称、类型、移除策略、健康检查3.3.设置组内实例数、冷却时间、网络类型、扩缩容策略、…

【数据结构与算法】不就是数据结构

前言 嗨喽小伙伴们你们好呀&#xff0c;好久不见了,我已经好久没更新博文了&#xff01;之前因为实习没有时间去写博文&#xff0c;现在已经回归校园了。我看了本学期的课程中有数据结构这门课程&#xff08;这么课程特别重要&#xff09;&#xff0c;因为之前学过一点&#xf…

华为数通方向HCIP-DataCom H12-831题库(单选题:41-60)

第41题 除了虚连接之外,OSPFV3的Hello报文源IPv6地址是哪种类型的IPv6地址? A、IPv6任播地址 B、唯一本地地址 C、全球单播地址 D、链路本地地址 答案: D 解析: 这里题目是源IPv6,不是目的IPv6,与另一题类似 第42题 下列描述中关于MPLS网络中配置静态LSP正确的是? A、…

简单线性回归(Simple Linear Regression)

简单线性回归(Simple Linear Regression) 简单线性回归(Simple Linear Regression)简介理解数据数据处理读取数据数据预览数据探索数据统计信息数据类型查看数据的直方图通过散点图查看数据的相关关系相关系数建立模型创建训练数据和测试数据建立简单线性回归模型查看回归方…

计算机等级考试—信息安全三级真题六

目录 一、单选题 二、填空题 三、综合题 一、单选题