QQ邮箱SMTP授权配置全流程:Spring Boot实现邮件发送

文章目录

概要

本教程面向Java开发者,手把手讲解如何在Spring Boot项目中集成QQ邮箱实现邮件发送功能。内容涵盖QQ邮箱SMTP服务开启步骤、授权码申请流程、Spring Boot邮件依赖配置、application.yml参数详解,以及完整的邮件发送代码实现,帮助开发者快速完成邮件功能集成。

前置条件

注册 QQ 号?

方法 1:电脑注册

打开 QQ 注册页面:

复制代码
https://ssl.zc.qq.com/

操作步骤:

复制代码
1. 打开浏览器
2. 进入 QQ 注册页面
3. 输入昵称
4. 设置 QQ 密码
5. 输入手机号
6. 获取短信验证码
7. 提交注册
8. 注册成功后会得到一个 QQ 号

注册成功后,记住你的:

复制代码
QQ号
QQ密码
绑定手机号

方法 2:手机 QQ App 注册
复制代码
1. 手机应用商店下载 QQ
2. 打开 QQ
3. 点击注册账号
4. 输入手机号
5. 获取短信验证码
6. 设置昵称和密码
7. 完成注册

开通流程

访问官网QQ邮箱地址:登录QQ邮箱

  1. 登录你的 QQ 邮箱 如下图所示,可以选择扫码登录
  1. 点击顶部或右上角的【设置】
  1. 进入【账号】或【账号与安全】
  1. 找到:

POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

  1. 开启:

IMAP/SMTP服务

或 POP3/SMTP服务

  1. 按提示进行手机号短信验证或 QQ 安全验证

扫码二维码发送信息验证,发送信息成功,点击我已发送

如下图接着按照提示的方式扫码二维码 按照步骤进行验证就好

  1. 验证通过后,会生成一个授权码

授权码一般是一串字符,例如:

abcd efgh ijkl mnop

如下图所示就是创建生成成功授权码了

技术细节

Spring Boot 配置 QQ 邮箱

假设你的 QQ 邮箱是:

复制代码
123456789@qq.com

授权码是:

复制代码
abcdefghijklmnop

那么 application.yml 这样写:

复制代码
spring:
  mail:
    host: smtp.qq.com
    port: 465
    username: 123456789@qq.com
    password: abcdefghijklmnop
    protocol: smtps
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          ssl:
            enable: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            port: 465

也可以用 587 端口:

复制代码
spring:
  mail:
    host: smtp.qq.com
    port: 587
    username: 123456789@qq.com
    password: abcdefghijklmnop
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

我建议你先用 465 + smtps,比较稳定。

Maven 依赖

你需要有邮箱这个依赖:

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

测试发送邮件代码

你可以先写一个简单测试,确认 QQ 邮箱能发出去。

复制代码
package cn.zhongtg.chunghub.auth.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/test/mail")
@RequiredArgsConstructor
public class TestMailController {

    private final JavaMailSender javaMailSender;

    @GetMapping("/send")
    public String send() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("123456789@qq.com");//请改成自己的,application.yml配置的邮箱号
        message.setTo("接收验证码的邮箱@example.com");// 修改接受的邮箱
        message.setSubject("测试邮件");
        message.setText("这是一封来自 Spring Boot 的测试邮件。");

        javaMailSender.send(message);

        return "发送成功";
    }
}

访问:

复制代码
http://localhost:你的端口/test/mail/send

如果返回:

复制代码
发送成功

并且邮箱收到邮件,说明配置正常。

小结

有任何问题,可以私信作者《全栈鍾猿》。会看到消息及时回复您的问题和解答哦

QQ邮箱SMTP免费限额:

  • 每天发送上限约 500封 邮件
  • 完全免费,不收费
  • 单封邮件附件大小限制 50MB

注意事项:

  • 短时间内发送太多邮件可能触发反垃圾机制,导致临时封禁
  • 仅适合个人项目、学习测试、小规模使用
  • 如果是生产环境、大量发送(比如营销邮件、大用户量验证码),建议用专业邮件服务:
服务 免费额度 适合场景
阿里云邮件推送 每天200封 生产环境
腾讯云SES 每天200封 生产环境
SendGrid 每天100封 国际项目