SpringBoot整合邮箱发送邮件

Spring Boot 提供了对 JavaMailSender 的自动配置支持,我们只需要简单配置并编写代码即可实现发送普通文本邮件、HTML 邮件、带附件的邮件等。

一、如何开启服务、获取授权码(前期准备)

1.点击设置(QQ邮箱示例)

请添加图片描述

2.找到账号一栏目

在这里插入图片描述

3.找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 点击管理服务

请添加图片描述

4.在这点击开启服务吗,我这已开启

在这里插入图片描述

5.记下授权码

在这里插入图片描述

二、Spring Boot 整合邮件发送功能(以 QQ 邮箱为例,必须有前期准备才可进行)

1. 添加依赖

pom.xml中添加 Spring Boot 邮件 Starter 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2. 配置邮箱信息(application.yml 或 application.properties)

这里以 QQ 邮箱 为例(其他邮箱类似,比如 163、Gmail 等,只是 SMTP 服务器地址和端口不同)。

使用 application.yml的配置示例:

spring:
  mail:
    host: smtp.qq.com          # QQ邮箱SMTP服务器地址
    port: 587                  # QQ邮箱SMTP服务端口(TLS:587,SSL:465)
    username: your_qq_email@qq.com   # 你的QQ邮箱
    password: your_authorization_code  # 不是QQ密码!是QQ邮箱的【授权码】
    protocol: smtp
    default-encoding: UTF-8 # 编码
    properties:
      mail.smtp.ssl.enable: true # 开启SSL加密
      mail.smtp.auth: true # 开启认证
      mail.smtp.timeout: 10000 # 连接超时时间
      mail.debug: true

重要提示:

  • password不是你的 QQ 登录密码,而是 QQ 邮箱的授权码
  • 如何获取 QQ 邮箱授权码?登录 QQ 邮箱 → 设置 → 账户 → 找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】→ 开启 SMTP 服务 → 按提示发短信后获取 授权码(通常是一串字母+数字)。

3.编写邮件发送服务类

创建一个 Service,例如 EmailService.java,注入 JavaMailSender来发送邮件。

示例:发送普通文本邮件
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

@SpringBootTest
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;
    
	//发件人从配置中读取可替换下面的发件人
    @Value("${spring.mail.username}")
    private String sender;
    /**
     * 发送简单文本邮件
     * @param to      收件人邮箱
     * @param subject 邮件主题
     * @param text    邮件内容
     */
    @Test
    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("your_qq_email@qq.com"); // 发件人(一般与username一致,也可从配置中读取)
        message.setTo(to);                      // 收件人
        message.setSubject(subject);            // 邮件主题(标题)
        message.setText(text);                  // 邮件正文(纯文本)

        mailSender.send(message);//发送邮件
        System.out.println("简单邮件已发送!");
    }
}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐