JavaMailで、POP3S (POP3 over SSL) を使ってメールを受信しようとしたけど
、メールサーバの証明書が無い(または自己証明書)為に、
SSLHandshakeExceptionでConnect出来ない。
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
Durtyな回避方法があったので、そっくりそのまま頂いた。
http://www.javaworld.com/javatips/jw-javatip115.html?page=2
力技で解決したコード。動けばいいんです。
Properties mailProp = new Properties(); Store store = null; String pop3Host = op.getProperty("mail.pop3.host"); String pop3Port = op.getProperty("mail.pop3.port"); String pop3User = op.getProperty("mail.pop3.user"); String pop3Password = op.getProperty("mail.pop3.pass"); mailProp.setProperty("mail.smtp.host", op.getProperty("mail.pop3.host")); // 正しくはこちら //mailProp.setProperty("mail.pop3.socketFactory.class","javax.net.ssl.SSLSocketFactory"); // 証明書を無視するダミークラスをセット mailProp.setProperty("mail.pop3s.socketFactory.class","net.nippontele.crane.mail.DummySSLSocketFactory"); Session sess = Session.getDefaultInstance(mailProp); store = sess.getStore("pop3s"); store.connect(pop3Host, Integer.parseInt(pop3Port), pop3User, pop3Password);