(已解决)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 {
    @Autowired
    private JavaMailSender javaMailSender;

    @GetMapping
    public 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 {
    @Autowired
    private 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)

成功接收


 

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

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

相关文章

关于source批量处理sql命令建立数据库后发现中文乱码问题解决方案(Mysql)

今天在使用souce建表的时候发现自己表结构中的中文出现了乱码问题&#xff0c;那么具体的解决方案如下&#xff1a; 首先我们先使用命令行连接自己的数据库 mysql -u root -p 12345 然后使用show variables like "char%"; 如果说你的这个里面不是utf-8那么就是出现了…

vulnhub靶场之Matrix-Breakout 2 Morpheus

一.环境搭建 1.靶场描述 This is the second in the Matrix-Breakout series, subtitled Morpheus:1. It’s themed as a throwback to the first Matrix movie. You play Trinity, trying to investigate a computer on the Nebuchadnezzar that Cypher has locked everyone…

王道_数据结构 1.2_2_算法的时间复杂度

1.2_2_算法的时间复杂度 一、为什么要事先预估算法时间开销二、时间复杂度的计算与技巧1、化简“算法时间开销”的计算方式的依据2、常用技巧&#xff08;1&#xff09;加法、乘法规则&#xff08;2&#xff09;时间复杂度的数量级阶数排行 3、计算时间复杂度的结论与步骤&…

能耗在线监测系统在节能管理中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;开展能耗在线监测系统建设&#xff0c;对加强政府部门和企业节能管理中的应用前景&#xff0c;分析系统在能源消费预测分析、能效对标、节能监察、能源精细化…

使用“快速开始”将数据传输到新的 iPhone 或 iPad

使用“快速开始”将数据传输到新的 iPhone 或 iPad 使用 iPhone 或 iPad 自动设置你的新 iOS 设备。 使用“快速开始”的过程会同时占用两台设备&#xff0c;因此请务必选择在几分钟内都不需要使用当前设备的时候进行设置。 确保你当前的设备已连接到无线局域网&#xff0c;并…

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时&#xff0c;首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…

Arcgis10.3安装

所需软件地址 链接&#xff1a;https://pan.baidu.com/s/1aAykUDjkaXjdwFjDvAR83Q?pwdbs2i 提取码&#xff1a;bs2i 1、安装License Manager 点击License Manager.exe&#xff0c;默认下一步。 安装完&#xff0c;点击License Server Administrator&#xff0c;停止服务。…

RK3588平台开发系列讲解(视频篇)RKMedia的VDEC模块

文章目录 一、 VDEC模块支持的编码标准介绍二、VDEC API的调用三、VDEC解码流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 VDEC模块支持的编码标准介绍 RK3688 V…

推荐系统|召回_Swing召回通道

召回_Swing 模型 swing模型是ItemCF的一种改造 ItemCF的原理 举个例子。 ItemCF的存在的问题 有可能两篇不同类型的物品/笔记被分享到同一个微信群&#xff0c;从而提高了两个不同类型的视频被同一组人打开的概率。 而这只能说明这两个物品/笔记具有相同的受众&#xff0c;…

Oracle 面试题 | 03.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

STM32G4 系列命名规则

STM32G4产品线 基础型系列STM32G4x1 具有入门级模拟外设配置&#xff0c;单存储区Flash&#xff0c;支持的Flash存储器容量范围从32到512KB。 增强型系列STM32G4x3 与基本型器件相比具有更多数量的模拟外设&#xff0c;以及双存储区Flash&#xff0c;Flash存储器容量也提高…

asdf安装不同版本的nodejs和yarn和pnpm

安装asdf 安装nodejs nodejs版本 目前项目中常用的是14、16和18 安装插件 asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin-add yarn https://github.com/twuni/asdf-yarn.git可以查看获取所有的nodejs版本 asdf list all nodejs有很多找…

红队打靶练习:INFOSEC PREP: OSCP

目录 信息收集 1、arp 2、nmap WEB 信息收集 wpscan dirsearch ssh登录 提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110.128 Starting arp-scan 1.10.0 with 256 ho…

如何将Mac连接到以太网?这里有详细步骤

在Wi-Fi成为最流行、最简单的互联网连接方式之前&#xff0c;每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。 如何将Mac连接到以太网 如果你的Mac有以太网端口&#xff0c;则需要以太网电缆&#xff1a; 1、将电缆一端接入互联网端口&#xff08;可以在墙…

【ARM Trace32(劳特巴赫) 使用介绍 3.1 -- 不 attach core 直接访问 memory】

文章目录 背景介绍背景介绍 在使用 trace32 时在有些场景需要不 attach core 然后去读写 memory,比如在某些情况下 core 已经挂死连接不上了,这个时候需要dump内存,这个时候需要怎做呢? print "test for memory access directly";SYStem.OPTION WAITRESET OF…

《区块链简易速速上手小册》第7章:区块链在其他行业的应用(2024 最新版)

文章目录 7.1 供应链管理7.1.1 供应链管理中区块链的基础7.1.2 主要案例&#xff1a;食品安全追踪7.1.3 拓展案例 1&#xff1a;制药供应链7.1.4 拓展案例 2&#xff1a;汽车行业的零部件追踪 7.2 区块链在医疗保健中的应用7.2.1 医疗保健中区块链的基础7.2.2 主要案例&#xf…

React中封装大屏自适应(拉伸)仿照 vue2-scale-box

0、前言 仿照 vue2-scale-box 1、调用示例 <ScreenAutoBox width{1920} height{1080} flat{true}>{/* xxx代码 */}</ScreenAutoBox> 2、组件代码 import { CSSProperties, ReactNode, RefObject, useEffect, useRef, useState } from react//数据大屏自适应函数…

IDEA2023打开新项目默认SDK变成了17

问题描述 项目安装了2个sdk版本&#xff0c;jdk8和jdk17 自从升级IDEA版本到2023以后&#xff0c;每次打开新项目&#xff0c;sdk都被默认选择成了jdk17, 每次都得手动修改 &#xff08;File--Project Structure&#xff09;&#xff0c;超级麻烦。 没有用的解决方法 以下这…

大规模灯控技术方案

需求&#xff1a;需要控制240个灯的亮和灭。 设备清单&#xff1a; 设备数量规格灯光控制板1rs485&#xff0c;12v48路灯光驱动版512v网关1数据转发&#xff0c;采集modbus&#xff0c;mqtt指令下发电源1ac转dc&#xff0c; 12v 方案流程图 mqtt broker 信息 地址 1.2.3.4:…

scienceplots绘图浅尝

前言 科研写作中&#xff0c;黑压压的文字里面如果能有一些优美的图片无疑会给论文增色不少&#xff0c;绘图的工具有很多&#xff0c;常用的有Excel、Python、Matlab等&#xff0c;Matlab在绘图方面相较于Python有一种更加原生的科研风&#xff0c;而且可视化编辑图例、坐标轴…