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);