差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
java:javamail:smtp:ssl_trust_site_validation [2018/01/31 21:36]
tony
java:javamail:smtp:ssl_trust_site_validation [2023/06/25 09:48] (目前版本)
行 31: 行 31:
 </​code>​ </​code>​
 \\ \\
 +為了可以針對是否驗證做切換,我是這樣處理:​
 +<code java>
 +private SocketFactory getMailSSLSocketFactory() {
 + try {
 + if (ignoreCertValidation) {
 + MailSSLSocketFactory factory = new MailSSLSocketFactory();​
 + factory.setTrustAllHosts(true);​
 + return factory;
 + }
 + return SSLSocketFactory.getDefault();​
 + } catch (GeneralSecurityException e) {
 + throw new RuntimeException(e);​
 + }
 +}
 +
 +switch (getEncryption()) {
 +case SSL:
 + prop.put("​mail.smtp.socketFactory",​ getMailSSLSocketFactory());​
 + break;
 +case TLS:
 + prop.put("​mail.smtp.ssl.socketFactory",​ getMailSSLSocketFactory());​
 + prop.put("​mail.smtp.starttls.enable",​ "​true"​);​
 + break;
 +default:
 + break;
 +}
 +</​code>​
 +
 除了以上方法,你也可以使用自己SocketFactory去解決這問題。我們也有程式可以在runtime將目標機器的certificate加到keystore中。 除了以上方法,你也可以使用自己SocketFactory去解決這問題。我們也有程式可以在runtime將目標機器的certificate加到keystore中。
 ===== Reference ===== ===== Reference =====