获取jakarta.mail.Session对象的实例时获取IllegalStateException



我是jakarta.mail的新手。在为jakarta-mail创建Session对象时,我遇到了以下错误。

java.lang.IllegalStateException: Not provider of jakarta.mail.util.StreamProvider was found

当由StreamProvider类提供程序方法调用时,FactoryFinder类查找方法抛出错误,似乎没有可用的服务提供程序??不知道这意味着什么,写电子邮件通知代码的新手。

authenticator为null,端口为25。

您似乎只链接到jakarta.mail-api库,该库只包含api,而不包含实际的实现。在Maven POM文件中尝试这样的操作。

请注意包含了org.eclipse.angus:jakarta.mail依赖项。

<!-- Jakarta email support -->
<!-- https://jakarta.ee/specifications/mail/ -->
<!-- https://github.com/jakartaee/mail-api -->
<dependency>
<groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>
<!-- https://github.com/eclipse-ee4j/angus-mail -->
<dependency>
<groupId>org.eclipse.angus</groupId>
<artifactId>jakarta.mail</artifactId>
<version>1.0.0</version>
</dependency>

它帮助了我。将您的jakarta依赖项替换为此

<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>

正如Ivan B所建议的,我从更改了依赖项

<dependency>
<groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>2.1.1</version>
</dependency>

<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>

它为我解决了问题。

这只是一个快速提示。确保在线程安全环境中运行jakarta.mail相关方法

最新更新