我需要使用Javamail和TLS(不是STARTTLS,而是专用于SSL / TLS的专用smtp端口)发送电子邮件。我只设法找到了Gmail的示例,但是使用了STARTTLS。有人可以为正常的SSL / TLS发布示例吗?非常感谢你!

最佳答案

official examples for JavaMail with Gmail使用SMTPS(即专用端口上基于SSL / TLS的SMTP)而不是STARTTLS。本质上,使用JavaMail的属性应该是mail.smtps.*而不是mail.smtp.*

如果要强制使用特定版本的SSL / TLS,例如TLSv1.0,则需要创建自己的SSLSocketFactory,可能会包装默认的SSLSocketFactory(或其他自定义的内容),但需要调用sslSocket.setEnabledProtocols(new String[] { "TLSv1" })返回插座之前。

您需要通过SSLSocketFactory配置属性将该mail.smtps.ssl.socketFactory作为实例传递,或者通过mail.smtps.ssl.socketFactory.class作为全限定类名传递(在这种情况下,您的类必须实现一个称为getDefault的静态方法)。

为了防止MITM攻击,您还需要使客户端验证服务器主机名:您需要将mail.smtps.ssl.checkserveridentity设置为true,因为默认情况下它似乎是false

08-15 19:38