JavaMail の POP3S で javax.net.ssl.SSLHandshakeException
2009 年 7 月 27 日
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);
カテゴリー: java