You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目无法识别JavaMailSender依赖,如何解决?

解决JavaMailSender依赖无法识别的问题

核心问题

你当前的pom.xml里,spring-boot-starter-mail仅在dependencyManagement块中声明了版本规则,但未在<dependencies>节点下实际引入依赖。dependencyManagement仅用于统一管理依赖版本,不会自动将依赖加入项目构建。此外,你的dependencyManagement中存在重复的spring-boot-starter-mail和spring-context-support配置,可能引发版本冲突风险。

修复步骤

1. 清理冗余配置

删除dependencyManagement中的以下冗余条目:

  • 重复的spring-context-support依赖声明
  • 两个不同版本的spring-boot-starter-mail依赖声明
  • 非必需的spring-integration-mail(仅基础邮件发送场景无需此依赖)

2. 实际引入邮件依赖

在<dependencies>节点下添加spring-boot-starter-mail依赖,由于项目父依赖已指定Spring Boot 2.7.5,无需手动指定版本:

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

3. 配置邮件服务器信息

在application.properties中添加邮件服务配置(以QQ邮箱为例,其他邮箱配置逻辑类似):

# 邮件服务器基础配置
spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=你的QQ邮箱账号
spring.mail.password=你的邮箱授权码(非登录密码)
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

4. 使用JavaMailSender

现在可以正常注入并使用JavaMailSender,示例代码如下:

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

@Service
public class EmailService {

    private final JavaMailSender mailSender;

    // 构造函数注入
    public EmailService(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void sendConfirmationToken(String toEmail, String token) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("你的发送邮箱");
        message.setTo(toEmail);
        message.setSubject("账户确认Token");
        message.setText("你的确认Token是:" + token);

        mailSender.send(message);
    }
}

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:20:24