我需要使用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
。