(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦

前面我们已经完成了发送静态验证码,现在用随机数作为动态验证码。

文章地址:spingboot 后端发送QQ邮箱验证码


使用注解@Component进行分层解耦加入ioc容器,方便调用。

package com.example.tianyidemo.utils;
import org.springframework.stereotype.Component;
import java.util.Random;

@Component
public class RandomNumberGenerator {

    public String generateRandomSixDigitNumber() {
        Random random = new Random();
        int randomNumber = random.nextInt(900000) + 100000;  // 生成一个六位数
        return String.valueOf(randomNumber);
    }
}

在之前文章的接口中,注入并调用,生成且打印。

注:我测试了很多次,所以并未传输真正的QQ邮箱,不然邮件发太多懒得删除。

package com.example.tianyidemo.controller;
import com.example.tianyidemo.pojo.EmailCode;
import com.example.tianyidemo.utils.RandomNumberGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/mail")
@RestController
public class MailDemoController {
    @Autowired
    private JavaMailSender javaMailSender;
    @Autowired
    private RandomNumberGenerator randomNumberGenerator;
    @GetMapping
    public String senderMail(@RequestBody EmailCode emailCode) {
        SimpleMailMessage message = new SimpleMailMessage();
        // 发件人 你的邮箱
        message.setFrom("1330141297@qq.com");
        // 接收人 接收者邮箱
        message.setTo(emailCode.getEmail()); // 使用emailCode对象的email属性设置接收者邮箱
        //邮件标题
        message.setSubject("天易游戏论坛:" + emailCode.getEmail()); // 使用email属性设置邮件主题中的用户名部分
        //邮件内容
        int emailCodes = Integer.parseInt(randomNumberGenerator.generateRandomSixDigitNumber());
        message.setText("尊敬的用户:" + emailCode.getEmail() + ",您好," + "您的验证码为: " + emailCodes); // 使用code属性设置邮件内容中的验证码部分
        // 添加打印输出信息
        System.out.println("发送邮件给:" + emailCode.getEmail());
        System.out.println("邮件主题:" + message.getSubject());
        System.out.println("邮件内容:" + message.getText());
        System.out.println("验证码:" +emailCodes);
        javaMailSender.send(message);
        return "success";
    }

}

进行前端测试:

测试成功


查看控制台打印:

控制台成功打印不同随机数

QQ邮箱因为地址不存在,成功退信

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新媒体与传媒行业数据分析实践:从网络爬虫到文本挖掘的综合应用,以“中国文化“为主题

大家好,我是八块腹肌的小胖, 下面将围绕微博“中国文化”以数据分析、数据处理、建模及可视化等操作 目录 1、数据获取 2、数据处理 3、词频统计及词云展示 4、文本聚类分析 5、文本情感倾向性分析 6、情感倾向演化分析 7、总结 1、数据获取 本…

AI算力专题:华为算力分拆:全球AI算力的第二极

今天分享的是AI算力系列深度研究报告:《AI算力专题:华为算力分拆:全球AI算力的第二极》。 (报告出品方:华西计算机团队) 报告共计:53页 全球龙头英伟达业绩持续高度景气,印证全球A…

字符串的简单处理

第1题 ISBN号码 查看测评数据信息 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最…

[css] 让文字进行竖着 分散对齐

.demo2 {width: 60px;background-color: aqua;height: 200px;display: grid;place-items: center;}参考: css 让文字进行竖着书写, 附带个小知识,行内块元素添加文字之后底部对不齐的问题

24.云原生之ArgoCD钩子

云原生专栏大纲 文章目录 Argo CD钩子如何定义钩子钩子删除策略 Argo CD钩子 Argo CD 是一个用于部署和管理 Kubernetes 应用程序的工具,它提供了一种声明式的方式来定义和自动化应用程序的部署过程。Argo CD 钩子(Hooks)是一种机制&#x…

朴素贝叶斯原理

朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一。它是基于贝叶斯定义和特征条件独立假设的分类器方法。由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数学基础,以及稳定的分类效率。NB模型所需估计的…

盘点Ubuntu上的那些必装软件-游戏篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、原生游戏1.纸牌2.扫雷3.数独4.麻将5.20486.国际象棋7.吃豆人8.围棋 二、Steam游戏1. CSGO&CS22.战争雷霆3.Dota24. 足球经理20185.文明66.地铁:离去7.完…

Linux:进程信号的概念与产生原理

文章目录 信号的概念实践信号关于前台和后台进程的操作 操作系统与外设信号的产生signal系统调用 前面的篇章结束了信号量的话题,那么接下来引入的是信号的话题,信号和信号量之间没有任何关系,只是名字比较像 信号的概念 在生活中存在各种各…

【C语言进阶篇】assert宏 使用详解

文章目录 一、assert简介 二、assert使用方法和规则 2.1 头文件 2.2 原型 2.3 功能 2.4 示例 2.5 assert的打开与关闭 三、注意事项 3.1 运行效率问题 3.2 assert只适用于调试版本 3.3 资源释放与清理 3.4 过度依赖 四、总结 个人主页: 倔强的石头的…

web前端开发--------阴影与转换

1.阴影分为文本阴影和盒子阴影 我们使用text-shadow属性为文本添加阴影效果,使用结构伪类为第一个子元素p添加阴影效果; 水平偏移量为负值时,表示阴影向左偏移; 垂直偏移量为负值时,表示阴影向上偏移。 …

【PaddleSpeech】语音合成-男声

环境安装 系统:Ubuntu > 16.04 源码下载 使用apt安装 build-essential sudo apt install build-essential 克隆 PaddleSpeech 仓库 # github下载 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 也可以从gitee下载 git clone https://gite…

龙芯--自主架构先驱者

🛑 这是ren_dong的第23篇原创 1、概述 自主可控最高的 MIPS 架构 CPU 龙芯是我国最早研制的高性能通用处理器系列,拥有 MIPS 指令的永久授权,并拓展出了自己的指令集loong ISA。龙芯采用自主 Loong ISA 指令系统,兼容 MIPS 指令&a…

C语言——标准输出函数(printf、putchar和puts)

目录 1. 标准输入输函数出头文件2. printf2.1 函数申明2.2 基本用法2.3 占位符2.4 输出格式2.4.1 限定宽度2.4.2 总是显示正负号2.4.3 限定小数位数2.4.4 输出部分字符串 3. putchar3.1 函数申明3.2 基本用法 4. puts4.1 函数申明4.2 基本用法 1. 标准输入输函数出头文件 #inc…

由反射引出的Java动态代理与静态代理

写在开头 在《深入剖析Java中的反射,由浅入深,层层剥离!》这篇文章中我们讲反射时,曾提到过Java的动态代理中使用了反射技术,那么好,今天我们要就着反射的索引,来学习一下Java中的代理&#xf…

不下载任何插件和依赖,在线导出swagger的api接口文档(word)

一、前言 swagger是一个非常方便用来生成api的工具集,它提供了可视化的restful风格的web界面,方便查看生成的api。 但是,想要将swagger生成的api直接导出为doc文档, 似乎不太方便实现,解析swagger的json串,…

空间计算时代加速到来,需要的不只是苹果

近年来,科技行业一直在期待“寒武纪”时刻。伴随技术革命的深入推进,所有厂商都预感新的时代即将到来,并期待自己成为那个引爆点,轻轻一触,推开一扇新的未来之门。 今年开年,苹果就为科技圈锚定了一个可能…

C#拆分字符串,正则表达式Regex.Split 方法 vs String.Split 方法

目录 一、使用的方法 1.使用Split(String, String)方法 2.String.Split 方法 二、源代码 1.源码 2.生成效果 使用正则表达式可以拆分指定的字符串。同样地,使用字符串对象的Split方法也可以实现此功能。使用字符串对象的Split方法可以根据用户选择的拆分条件&…

PythonWeb框架库之fastapi使用详解

概要 Python是一门广受欢迎的编程语言,用于构建各种类型的Web应用程序。FastAPI是一个现代、高性能的Web框架,它以简单的方式提供了快速构建API的能力。本文将介绍FastAPI的各种功能和用法,并提供丰富的示例代码,帮助大家开始使用…

帮管客CRM 文件上传漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

指针+一维整型数组的基本运用 和 指针+一维整型数组的初步学习

一,调式程序的技巧: 1.明确问题 2.定位问题 3.加打印(打印核心数据0) 二,指针的回顾 1.指针的概念:指针就是地址(内存单元的编号),是一个数据类型(指针类型…
最新文章