【问题标题】:Spring JavaMailSenderImpl javax.mail.NoSuchProviderException: smtpSpring JavaMailSenderImpl javax.mail.NoSuchProviderException:smtp
【发布时间】:2011-03-02 18:30:43
【问题描述】:

我有一个非常大的项目,其中包含大量依赖项,并且在尝试发送邮件时遇到以下异常:

javax.mail.NoSuchProviderException: smtp

我知道代码有效,因为它是其他项目中使用的库的一部分。有谁知道什么会导致这个异常发生?我查看了所有的 jar,唯一包含“javax.mail”的是“mail-1.4.4-SNAPSHOT.jar”。

是否有一些文件/类注册了“smtp”协议,并且它可能发生在我的类路径中的其他地方?

【问题讨论】:

    标签: spring smtp jakarta-mail


    【解决方案1】:

    我现在遇到了这个问题。问题是同一个类路径中有两个 javax.mail.jar。

    【讨论】:

      【解决方案2】:

      当您的类路径中的“mailapi.jar”文件版本不正确时,也会发生这种情况。

      我最近升级了一个项目以使用 PayPal 的 soap API,而 PayPal 的发行版包含一个 mailapi.jar 文件,该文件与我目前在项目中的文件不同,并导致我的应用程序在发送邮件时失败.

      所以对我来说,我只需要恢复到我的旧 mailapi.jar 就可以了。

      【讨论】:

      • 这对我来说是同样问题的原因。感谢您的指点,在注意到它现在是 PayPals 之前,我已经检查了很多次这个库。
      【解决方案3】:

      这个问题已经有一段时间了,但仍然值得回答:

      您的邮件服务正在使用 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>
      

      【讨论】:

        【解决方案4】:

        当我们将 jboss 从 4.x 升级到 6.x 时,我遇到了同样的问题。

        这里的问题是将类路径设置为更多数量的 mail.jar 文件(如果那里可用,默认服务器将从其 common/lib 文件夹中获取 mail.jar)。 要确认它使用的是哪个 jar 文件,下面的语句很有用。

        System.out.println(getClass().getResource("/javax/mail/Address.class"));

        如果它正在使用您不期望的另一个 jar 文件.. 将类路径设置为您正在使用的那个。否则,从上面的打印位置删除该 jar 文件。

        【讨论】:

          【解决方案5】:

          我遇到了这个问题。将 smtp.jar 放入类路径解决了这个问题。

          【讨论】:

          • 添加 SMTP.jar 刚刚为我解决了这个问题。
          【解决方案6】:

          我解决此问题的方法是从类路径中删除邮件 jar。在类路径中的某个地方存在另一个 mail.jar 实例,我还没有找到它。如果其他人遇到此问题,可以在此处找到有关故障排除的其他信息:

          http://forum.springsource.org/showthread.php?t=90737http://forums.sun.com/thread.jspa?threadID=5442371

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-11-28
            • 1970-01-01
            • 1970-01-01
            • 2011-08-03
            • 2017-04-22
            相关资源
            最近更新 更多