获取jakarta.mail.Session实例时触发IllegalStateException异常求助
解决Jakarta Mail创建Session时的StreamProvider找不到错误
错误原因
这个错误是因为Jakarta Mail 2.0及以上版本依赖jakarta.mail.util.StreamProvider服务处理流操作,但你的项目里缺少了该服务的具体实现依赖。Jakarta Mail API本身只定义规范,需要配套的实现包才能运行。
解决方法
- 引入完整的Jakarta Mail实现依赖:
只引入jakarta.mail-api是不够的,必须添加包含实现类的依赖。以Maven为例,在pom.xml中添加:
Gradle项目则添加:<dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>2.0.1</version> <!-- 可替换为最新稳定版本 --> </dependency>implementation 'com.sun.mail:jakarta.mail:2.0.1' - 验证类路径:
确认构建工具已正确下载依赖,且类路径中存在包含META-INF/services/jakarta.mail.util.StreamProvider文件的JAR包,该文件指定了StreamProvider的具体实现类。
关于Authenticator和端口的补充
你设置的authenticator为null、端口25,对应无需认证的SMTP服务器场景(比如内部测试服务器),这个配置本身没问题。如果后续发送邮件失败,再检查SMTP服务器是否允许匿名连接、端口是否开放即可。
内容的提问来源于stack exchange,提问作者Percival Bragg
相关产品推荐
相关产品推荐

