Javamail如何在没有证书验证的情况下连接到IMAPs邮件服务器

Javamail how to connect to IMAPs mail server, without certificate Validation

我正在尝试在测试环境中将我的 Java 应用程序连接到 993 上的 IMAP 服务器邮件。

我正在尝试忽略证书验证,使用以前对类似问题的回答中的建议,如下所示:

imapProps.put("mail.imaps.ssl.checkserveridentity", "false");
imapProps.put("mail.imaps.ssl.trust", "*");

但它似乎不起作用,我仍然遇到异常。

Cannot process current mailbox => sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:727)

所以我的问题是,是否真的可以使用 IMAPS 协议连接到邮件服务器,而无需检查或验证证书?

如果是,那么选择忽略证书验证不是双方的决定吗? Java应用程序和邮件服务器?

您需要在属性和 getStore 方法调用中使用相同的协议名称。因此,由于您正在设置 imaps 属性,因此您应该使用 Store s = session.getStore("imaps");