为什么JSSE提供程序在以下情况下使用?

时间:2014-08-17 09:00:18

标签: android javamail

我看到了这个例子 - Sending Email in Android using JavaMail API without using the default/built-in app - 使用javamail发送电子邮件,我注意到了JSSE提供商的手动设置。
在没有用户交互的情况下在Android上发送邮件的上下文中使用JSSE有什么意义? (我在编写JVM时通过smtps发送电子邮件时从未使用过与JSSE相关的代码。)删除与JSSEProvider相关的代码位有什么后果?我觉得我可能无法使用imapssmtps连接到邮件服务器。是这样的吗?有一些Android的代码依赖于javamail来发送邮件,而没有明确地使用/引用JSSE相关的东西。这段代码是我未经测试的,但是大多数评论者同意它的作用与广告一样,这增加了我的困惑。

2 个答案:

答案 0 :(得分:0)

请注意,引用的代码包含多个common JavaMail mistakes。我不知道为什么要求JSSE提供商,但也许修复这些错误将消除它的需要。

答案 1 :(得分:0)

来自班级的构造函数

public JSSEProvider() {
    super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");

    put("SSLContext.SSL", SSLContextImpl.class.getName());
    put("SSLContext.SSLv3", SSLContextImpl.class.getName());
    put("SSLContext.TLS", SSLContextImpl.class.getName());
    put("SSLContext.TLSv1", SSLContextImpl.class.getName());

    put("KeyManagerFactory.X509", KeyManagerFactoryImpl.class.getName());
    put("TrustManagerFactory.X509", TrustManagerFactoryImpl.class.getName());
    put("KeyStore.AndroidCAStore", TrustedCertificateKeyStoreSpi.class.getName());
}

JSSEProvider用于链接SSLContext的修改版本,X509的KeyManagerFactory,X509的TrustManagerFactory和AndroidCAstore。因此,如果它适用于Android,您将无法删除。