(已解决)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("[email protected]");
        // 接收人 接收者邮箱
        message.setTo(new String[]{"[email protected]"});

        //邮件标题
        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)

成功接收

相关推荐
leo__52013 分钟前
在Ubuntu中设置开机自动运行(sudo)指令的指南
服务器·ubuntu·postgresql
Leo.yuan26 分钟前
数据湖是什么?数据湖和数据仓库的区别是什么?
大数据·运维·数据仓库·人工智能·信息可视化
程序员JerrySUN1 小时前
Linux 内核内存管理子系统全面解析与体系构建
java·linux·运维
CIb0la1 小时前
Ai自动补全编程工具:llama vscode
运维·开发语言·学习·测试工具·程序人生
rui锐rui1 小时前
大模型模型部署和暴露接口
linux·运维·服务器
Clownseven1 小时前
云防火墙(安全组)配置指南:从入门到精通端口开放 (2025)
服务器·安全
BJ_Bonree1 小时前
博睿数据×华为, 共筑智慧金融新未来
运维
孙克旭_1 小时前
day030-Shell自动化编程-函数
linux·运维·自动化
IT葛大侠2 小时前
OSPF域内路由
运维·网络·计算机网络
面朝大海,春不暖,花不开4 小时前
管理数据洪流:自动化处理与归档每日数据文件的策略与实践
运维·python·自动化