当前位置: 首页 > news >正文

(已解决)spingboot 后端发送QQ邮箱验证码

打开QQ邮箱pop3请求服务:(按照QQ邮箱引导操作)


导入依赖(不是maven项目就自己添加jar包):

<!--        邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>3.2.1</version></dependency>

application.properties配置:

:需要yml的,推荐转换工具或者下载idea插件yamls
yml,properties互转工具:yaml和proper互转工具

#邮箱配置
spring.mail.host=smtp.qq.com
spring.mail.port=465
spring.mail.username=邮箱地址
spring.mail.password=授权码
spring.mail.test-connection=true
spring.mail.properties.mail.smtp.ssl.enable=true

Controller层:

:我使用的是自己静态验证码,就是为了一步一步来更加清晰,首先是要实现成功发送邮件,

后期大家自己加随机数做动态验证码替换静态验证码就好了,可以使用存入数据库或者redius。

更新(动态验证码发送):动态验证码发送

package com.example.tianyidemo.controller;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/mail")
@RestController
public class MailDemoController {@Autowiredprivate JavaMailSender javaMailSender;@GetMappingpublic String senderMail() {SimpleMailMessage message = new SimpleMailMessage();// 发件人 你的邮箱message.setFrom("1330141297@qq.com");// 接收人 接收者邮箱message.setTo(new String[]{"1416655407@qq.com"});//邮件标题message.setSubject("天易游戏论坛:");//邮件内容message.setText("尊敬的用户:你好,欢迎使用天易游戏论坛,您的注册验证码为:678253");javaMailSender.send(message);return "success";}
}

EmailService层:

package com.example.tianyidemo.service;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;@Service
public class EmailService {@Autowiredprivate JavaMailSender mailSender;@Value("${spring.mail.username}")private String from;/*** 发送邮件** @param to      收件人邮箱* @param subject 邮件主题* @param content 邮件内容*/public void sendMail(String to, String subject, String content) throws MessagingException {// 创建邮件消息MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(from);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);// 发送邮件mailSender.send(message);}
}

实体类:(不知道有没有用,忘记了,要是报错就加上)

@Data
public class Mail {public String email;public String username;public String password;
}

前端测试:(请注意oken的路径拦截!如果没写token可以不用管,也不用请求头添加token)

成功接收


 

相关文章:

(已解决)spingboot 后端发送QQ邮箱验证码

打开QQ邮箱pop3请求服务&#xff1a;&#xff08;按照QQ邮箱引导操作&#xff09; 导入依赖&#xff08;不是maven项目就自己添加jar包&#xff09;&#xff1a; <!-- 邮件发送--><dependency><groupId>org.springframework.boot</groupId><…...

【蓝桥杯冲冲冲】[NOIP2001 普及组] 装箱问题

蓝桥杯备赛 | 洛谷做题打卡day26 文章目录 蓝桥杯备赛 | 洛谷做题打卡day26题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 题解代码我的一些话 [NOIP2001 普及组] 装箱问题 题目描述 有一个箱子容量为 V V V&#xff0c;同时有 n n n 个物品&#xff0c;每…...

2024牛客寒假算法基础集训营1

文章目录 A DFS搜索M牛客老粉才知道的秘密G why外卖E 本题又主要考察了贪心B 关鸡C 按闹分配 今天的牛客&#xff0c;说是都是基础题&#xff0c;头昏昏的&#xff0c;感觉真不会写&#xff0c;只能赛后补题了 A DFS搜索 写的时候刚开始以为还是比较难的&#xff0c;和dfs有关…...

元素的显示与隐藏,精灵图,字体图标,CSSC三角

元素的显示与隐藏 类似网站广告&#xff0c;当我们点击关闭就不见了&#xff0c;但是我们重新刷新页面&#xff0c;会重新出现 本质&#xff1a;让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性&#xff08;…...

最新!2024顶级SCI优化!TTAO-CNN-BiGRU-MSA三角拓扑聚合优化、双向GRU融合注意力的多变量回归预测程序!

适用平台&#xff1a;Matlab 2023版及以上 TTOA三角聚合优化算法&#xff0c;将在2024年3月正式发表在中科院1区顶级SCI期刊《Expert Systems with Applications》上。 该算法提出时间极短&#xff0c;目前以及近期内不会有套用这个算法的文献。新年伊始&#xff0c;尽快拿下…...

Flink SQL Client 安装各类 Connector、组件的方法汇总(持续更新中....)

一般来说&#xff0c;在 Flink SQL Client 中使用各种 Connector 只需要该 Connector 及其依赖 Jar 包部署到 ${FLINK_HOME}/lib 下即可。但是对于某些特定的平台&#xff0c;如果 AWS EMR、Cloudera CDP 等产品会有所不同&#xff0c;主要是它们中的某些 Jar 包可能被改写过&a…...

React18-模拟列表数据实现基础表格功能

文章目录 分页功能分页组件有两种接口参数分页类型用户列表参数类型 模拟列表数据分页触发方式实现目录 分页功能 分页组件有两种 table组件自带分页 <TableborderedrowKey"userId"rowSelection{{ type: checkbox }}pagination{{position: [bottomRight],pageSi…...

MySQL查询数据(十)

MySQL查询数据&#xff08;十&#xff09; 一、SELECT基本查询 1.1 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句&#xff0c;可以做下面的事&#xff1a; **列选择&#xff1a;**能够使用 SELECT 语句的列选择功能选择表中的列&#xff0c;这些…...

AJAX-常用请求方法和数据提交

常用请求方法 请求方法&#xff1a;对服务器资源&#xff0c;要执行的操作 axios请求配置 url&#xff1a;请求的URL网址 method&#xff1a;请求的方法&#xff0c;如果是GET可以省略&#xff1b;不用区分大小写 data&#xff1a;提交数据 axios({url:目标资源地址,method…...

2024美国大学生数学建模竞赛美赛B题matlab代码解析

2024美赛B题Searching for Submersibles搜索潜水器 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其余代码看文末 Dthxlsread(C:\Users\Lenovo\Desktop\Ionian.xlsx); DpDth(:,3:5); dy0.0042; dx0.0042; …...

【DouYing Desktop】

I) JD 全日制大专及以上学历&#xff1b; 2. 3年以上的IT服务支持相关工作经验 3. 有较强的桌面相关trouble shooting与故障解决能力&#xff0c;能够独立应对各类型桌面问题&#xff1b; 4. 具备基础的网络、系统知识&#xff0c;能够独立解决常见的网络、系统等问题&#xf…...

正则表达式与文本处理工具

目录 引言 一、正则表达式基础 &#xff08;一&#xff09;字符匹配 1.基本字符 2.特殊字符 3.量词 4.边界匹配 &#xff08;二&#xff09;进阶用法 1.组与引用 2.选择 二、命令之-----grep &#xff08;一&#xff09;基础用法 &#xff08;二&#xff09;高级用…...

IDEA中的Run Dashboard

Run Dashboard是IntelliJ IDEA中的工具【也就是View中的Services】&#xff0c;提供一个可视化界面&#xff0c;用于管理控制应用程序的运行和调试过程。 在Run DashBoard中&#xff0c;可以看到所有的运行配置&#xff0c;以及每个配置的运行状态&#xff08;正在运行&#xf…...

【力扣白嫖日记】SQL

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1407.排名靠前的旅行者 表&#xff1a;Users 列名类型idintnamevarchar id 是该表中具有唯一值的列。name …...

自动化报告pptx-python|高效通过PPT模版制造报告(三)

这是自动化报告学习的第三篇了,前面两篇分别是: 自动化报告的前奏|使用python-pptx操作PPT(一)自动化报告pptx-python|如何将pandas的表格写入PPTX(二)本篇是逼着笔者看到JoStudio 大佬自己写的一个jojo-office 库,基于pptx-python开发成一套试用office软件的依赖,非…...

Linux升级openssh的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读

YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读 YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读一、前言二、我的环境三、yolov5s.yaml源文件内容四、Parameters五、anchors配置六、backbone七、head八、总结 OLOv5-第Y2周&#xff1a;训练自己的数据集) YOLOv5白皮书-第Y3周:yolov5s.…...

C++ pair+map+set+multimap+multiset+AVL树+红黑树(深度剖析)

文章目录 1. 前言2. 关联式容器3. pair——键值对4. 树形结构的关联式容器4.1 set4.1.1 set 的介绍4.1.2 set 的使用 4.2 map4.2.1 map 的介绍4.2.2 map 的使用 4.3 multiset4.3.1 multiset 的介绍4.3.2 multiset 的使用 4.4 multimap4.4.1 multimap 的介绍4.4.2 multimap 的使…...

指针的学习1

目录 什么是指针&#xff1f; 野指针 造成野指针的原因&#xff1a; 如何避免野指针&#xff1f; 内存和指针 如何理解编址&#xff1f; 指针变量和地址 取地址操作符& 指针变量和解引用操作符 指针变量 如何拆解指针类型&#xff1f; 指针变量的大小 指针变量…...

c++:敲桌子

先输出1-100数字&#xff0c;从100个数字中找到这些特殊数字改为敲桌子。 特殊数字&#xff1a;1.7的倍数 2.十位数上有7 3.个位数上有7 #include<iostream> using namespace std; int main() {for (int i 1; i < 100; i) {if (i / 10 7 || i % 10 7|| i % 7 0)…...

cv_unet_image-colorization实战案例:退役军人事务局荣誉影像AI修复工程

cv_unet_image-colorization实战案例&#xff1a;退役军人事务局荣誉影像AI修复工程 1. 项目背景与意义 在退役军人事务局的档案库中&#xff0c;保存着大量珍贵的历史照片。这些黑白影像记录着军人的荣誉时刻&#xff0c;但由于年代久远和技术限制&#xff0c;很多照片已经褪…...

零基础玩转OpenClaw:Qwen3.5-9B镜像云端体验指南

零基础玩转OpenClaw&#xff1a;Qwen3.5-9B镜像云端体验指南 1. 为什么选择云端体验OpenClaw 作为一个长期在本地折腾AI工具的开发者&#xff0c;我完全理解新手面对环境配置时的恐惧。记得第一次尝试部署本地AI助手时&#xff0c;光是解决Python版本冲突就花了两天时间。直到…...

如何用readme.so快速制作专业README:揭秘实时预览与Markdown同步技术

如何用readme.so快速制作专业README&#xff1a;揭秘实时预览与Markdown同步技术 【免费下载链接】readme.so An online drag-and-drop editor to easily build READMEs 项目地址: https://gitcode.com/gh_mirrors/re/readme.so readme.so是一款功能强大的在线拖放编辑器…...

ESP32S3变身HID设备:用esp-iot-solution实现USB键盘鼠标(附常见编译错误修复)

ESP32S3实战&#xff1a;基于esp-iot-solution打造高响应USB HID设备的全流程指南 当ESP32S3遇上USB HID协议&#xff0c;开发者手中的这块开发板瞬间化身为键盘鼠标模拟利器。不同于市面上简单的教程&#xff0c;本文将带您深入esp-iot-solution框架的核心&#xff0c;从环境搭…...

坐标系工艺参数的设定

在一台专机机床上模拟圆弧程序时&#xff0c;发现G2和G3的方向是反的&#xff0c;G2轴按逆时针方向运行&#xff0c;G3轴按顺时针方向运行。测试程序如下&#xff1a;G19G0 G90 Y0 Z0G2 Y100 Z100 CR100 F500M30G2指令时&#xff0c;圆弧为逆时针方向G3指令时&#xff0c;圆弧为…...

硬件工程师的调试日常与职场趣事

1. 硬件工程师的日常&#xff1a;那些让人哭笑不得的瞬间 作为一名从业十年的硬件工程师&#xff0c;我见过太多同行们面对电路板时那副欲哭无泪的表情。这个行业就是这样——充满了让人抓狂的瞬间&#xff0c;但也正是这些时刻&#xff0c;让我们这群"电路修理工"有…...

Linux学习进展 计算机基本硬件结构

学习Linux系统&#xff0c;本质上是掌握“软件如何操控硬件”的逻辑——Linux作为开源操作系统&#xff0c;其内核与硬件的深度绑定的特性&#xff0c;决定了我们必须先理解计算机基本硬件结构&#xff0c;才能更清晰地明白Linux内核的调度机制、资源管理逻辑&#xff0c;以及后…...

别再只靠瓦片等级了!用Cesium精准控制地图缩放的自定义比例尺方案

突破瓦片等级限制&#xff1a;Cesium动态比例尺的工程实践与业务集成 在三维地理信息系统的开发中&#xff0c;地图缩放控制一直是个既基础又关键的课题。传统依赖预定义瓦片等级的做法&#xff0c;就像用固定档位的变速箱驾驶越野车——虽然简单直接&#xff0c;但面对复杂地形…...

通义千问3-4B树莓派快速部署:两种方法(llama.cpp vs Ollama)对比

通义千问3-4B树莓派快速部署&#xff1a;两种方法&#xff08;llama.cpp vs Ollama&#xff09;对比 1. 为什么选择在树莓派上部署通义千问3-4B 树莓派作为一款低成本、低功耗的单板计算机&#xff0c;近年来在边缘计算领域展现出巨大潜力。通义千问3-4B-Instruct-2507模型凭…...

P1094 [NOIP 2007 普及组] 纪念品分组 总结与反思

这题想了好久好久&#xff0c;但还是不能全部AC&#xff0c;最终还是找AI要了提示——用双指针&#xff0c;才发现这题用双指针的话其实一点都不难&#xff08;一开始我就是硬解&#xff0c;也是双指针的逻辑&#xff0c;但用了两层循环&#xff0c;更复杂难懂&#xff0c;特殊…...