作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试设置我的 Java 项目以便能够发送电子邮件(通过 g-mail,如果它重要的话)并且每次我尝试时都收到“javax.mail.NoSuchProviderException:没有 smtps 提供商”运行以下行(从他们的示例中复制/粘贴)。
Transport transport = session.getTransport("smtps");
我环顾四周,发现通常会抛出此问题,因为您的类路径中没有包含 mail.jar,但实际上我确实包含了 mail.jar。由于我运行的是 JDK 1.6,因此根据此处的常见问题 (http://www.oracle.com/technetwork/java/javamail/faq-135477.html#classpath),我不需要包含 activation.jar。此外,activation.jar 似乎不存在于 1.4.7 版的 javamail 中。
为了防止出现问题,我从 oracle 的网站重新下载了整个 zip,将其解压缩并添加了新的 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)
最佳答案
以防万一有人犯了和我一样的错误:你必须使用小写字母才能使协议(protocol)解析生效。如果您键入 SMTP
而不是 smtp
作为协议(protocol)名称,您将得到 NoSuchProviderException
。对于所有其他提供商,它很可能以相同的方式工作。
关于javax.mail.NoSuchProviderException : No provider for smtps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16861553/
我是一名优秀的程序员,十分优秀!