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

Spring Boot 3发送邮件报错:找不到MailcapRegistryProvider实现

异常原因分析

这个错误的核心原因是缺少Jakarta Activation组件的实现类:

  • Spring Boot 3全面迁移到Jakarta EE规范,原Java EE的javax.*命名空间全部替换为jakarta.*
  • MailcapRegistryProvider是Jakarta Activation的核心SPI接口,负责邮件MIME类型的注册与解析
  • 虽然spring-boot-starter-mail依赖了Jakarta Mail,但部分场景下会出现依赖传递缺失,或者项目中存在旧版本javax.activation依赖冲突,导致无法找到该Provider的实现
解决办法

1. 添加Jakarta Activation实现依赖

在pom.xml中直接引入Activation的实现包(API包已通过spring-boot-starter-mail间接引入):

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>jakarta.activation</artifactId>
</dependency>

2. 排查并排除依赖冲突

执行Maven命令查看依赖树:

mvn dependency:tree

如果输出中存在javax.activation:activation这类旧版本依赖,需要在对应的依赖中排除它,避免与Jakarta版本冲突:

<dependency>
    <groupId>[冲突依赖的groupId]</groupId>
    <artifactId>[冲突依赖的artifactId]</artifactId>
    <exclusions>
        <exclusion>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 确认依赖版本一致性

确保项目中所有与邮件、Activation相关的依赖都使用Jakarta版本(即groupId为jakarta.*或com.sun.activation),禁止混合使用javax.*和jakarta.*的依赖包。

你的邮件发送代码本身没有问题,修复依赖后即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:05:23