差異處
這裏顯示兩個版本的差異處。
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 ===== |