wun*_*tee 4 spring smtp jakarta-mail
我有一个非常大的项目,有大量的依赖,并在尝试发送邮件时遇到以下异常:
javax.mail.NoSuchProviderException: smtp
Run Code Online (Sandbox Code Playgroud)
我知道代码可以工作,因为它是在其他项目中使用的库的一部分.有谁知道会导致这种异常的原因是什么?我查看了所有的jar,唯一包含'javax.mail'的是'mail-1.4.4-SNAPSHOT.jar'.
是否有一些文件/类注册了'smtp'协议,它可能发生在我的类路径中的其他地方?
已经有一段时间了,因为这个问题已被提出,但它仍然值得回答:
发生的事情是您的邮件服务使用SMTP(通常,它甚至被认为是使用的默认协议)协议来发送邮件.无论你使用什么具体的类作为邮件服务(可能取决于你是使用Java EE,Spring还是其他东西),它最终都会使用javamail API中的类.在此API中,为了建立与邮件服务器的连接,将创建javax.mail.Session的实例,并且此对象将动态加载为要使用的协议提供支持的类.
当加载所需的类时,如果找不到它,则会捕获ClassNotFoundException并将其作为javax.mail.NoSuchProviderException重新抛出,并显示一条消息,指示缺少协议支持.
在这种情况下,解决方案是将smtp.jar添加到类路径中.使用基于Maven的项目,只需添加以下依赖项
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>smtp</artifactId>
<version>1.4.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8958 次 |
| 最近记录: |