尝试从Android访问Gmail时,为什么会出现javax.mail.NoSuchProviderException?

时间:2015-05-19 13:21:32

标签: java android javamail gmail-imap

尝试使用Gmail IMAP API时出现此异常。这是我的代码的一部分。

session = Session.getDefaultInstance(props, null);

// Exception occurs on the line below
store = (GmailSSLStore) session.getStore("gimaps");

store.connect(userID,password);

参考文献:

https://java.net/projects/javamail/lists/users/archive/2012-08/message/0

https://javamail.java.net/nonav/docs/api/com/sun/mail/gimap/package-summary.html

1 个答案:

答案 0 :(得分:1)

在手动将gmail IMAP提供程序添加到会话之前,我没有超过异常:

session = Session.getDefaultInstance(props, null);

// Adding Provider here corrected issue
session.addProvider(new Provider(Provider.Type.STORE, "gimaps", "com.sun.mail.gimap.GmailSSLStore","Oracle","1.5.4"));

store = (GmailSSLStore) session.getStore("gimaps");

store.connect(userID,password);

此信息来自gimap.jar的“META-INF / javamail.providers”文件。

问题的根本原因可能是Session的loadProviders()方法中“javamail.providers”文件的可用性。请参阅http://glassfish.sourcearchive.com/documentation/2plus-pb58g-4/classjavax_1_1mail_1_1Session_d90c688f88969065bb3db9716d1ab84a.html