ホーム > java > JavaMail の POP3S で javax.net.ssl.SSLHandshakeException

JavaMail の POP3S で javax.net.ssl.SSLHandshakeException

2009 年 7 月 27 日 tdtsh

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 タグ:
コメントは受け付けていません。