【问题标题】:Why am I getting a javax.mail.NoSuchProviderException when attempting to access Gmail from Android?为什么我在尝试从 Android 访问 Gmail 时收到 javax.mail.NoSuchProviderException?
【发布时间】:2015-07-31 08:31:56
【问题描述】:

我在尝试使用 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

【问题讨论】:

    标签: java android jakarta-mail gmail-imap


    【解决方案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

    【讨论】:

    • 如果将 gimap.jar 文件添加到您的类路径还不够,那么您的类加载器中的某些东西会阻止 JavaMail 发现 gimap.jar 文件中包含的配置文件。
    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多