我正在尝试设置我的Java项目,使其能够发送电子邮件(如果有必要的话,可以通过g-mail ),并且每次我尝试运行下面的代码行(从他们的示例中复制/粘贴)时,都会得到"javax.mail.NoSuchProviderException: No provider for smtps“。
Transport transport = session.getTransport("smtps");我环顾四周,发现这通常会被抛出,因为您的类路径中没有包含mail.jar,但我确实包含了mail.jar。因为我运行的是JDK1.6,所以根据这里的常见问题解答(http://www.oracle.com/technetwork/java/javamail/faq-135477.html#classpath),我不需要包含activation.jar。此外,activation.jar似乎不存在于javamail1.4.7版本中。
为了防止损坏,我从oracle网站重新下载了整个压缩包,将其解压并重新添加了jar包(在删除旧jar包之后),但我仍然收到相同的错误。在这一点上,有什么想法可能是问题吗?
编辑:下面是正在打印的完整堆栈跟踪:
javax.mail.NoSuchProviderException: No provider for smtps
at javax.mail.Session.getProvider(Session.java:433)
at javax.mail.Session.getTransport(Session.java:627)
at javax.mail.Session.getTransport(Session.java:608)
... my code that calls getTransport() ...
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
... more of my code ...
at java.lang.Thread.run(Thread.java:662)发布于 2013-06-05 23:27:57
所以问题最终被证明是因为我引用的一个项目中包含了一个过时的mail.jar版本,在更新该mail.jar副本时,问题就解决了。
对于将来的参考,有没有办法记录或提供此类jar冲突的可见性?
发布于 2014-09-22 14:14:23
当您使用邮件API时,请确保您希望使用哪种协议?在这种情况下,您的eclipse项目缺少smtp.jar。
在邮件api中有几个用于不同协议的jars。例如: dsn.jar、gimap.jar、imap.jar、mailapi.jar、pop3.jar、smtp.jar
发布于 2015-09-07 18:29:18
以防有人犯了和我一样的错误:你必须使用小写字母才能使协议解析起作用。如果您键入SMTP而不是smtp作为协议名称,您将获得NoSuchProviderException。它很可能以同样的方式工作于所有其他提供商。
https://stackoverflow.com/questions/16861553
复制相似问题