最近、Java メール ssl を実行しているときに問題が発生しました: システムが一定期間実行されていると、JavaMail を使用して電子メールを受信できません。
エラー メッセージは次のとおりです:
javax.mail.MessagingException : 接続に失敗しました;
ネストされた例外は:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 有効な証明書が見つかりません要求されたターゲットへのパス
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
at javax.mail.Service.connect(Service.java:275)
at javax. mail.Service.connect(Service. java:156)
at javax.mail.Service.connect(Service.java:105)
または、SSL を有効にしていないメール サーバーには次のエラーがあります:
ネストされた例外は次のとおりです。
java.net.ConnectException : 接続が拒否されました
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
Telnet でメール サーバーに接続します。ユーザー名とパスワードは問題ありません。プログラムの問題だけのようです。
Properties props = System.getProperties() は、MailSession の作成時に使用されました。これを印刷すると、エラーが見つかりました。SSL 検証は使用されていないはずですが、検証情報は表示されていないはずです。 POP3 に接続するたびに SSL リンクが必要ない場合は、これらの属性を削除すると問題は解決します。
ついに、誰が System.getProperties() を変更したかがわかりました。同じ Tomcat 内で別のシステムが実行されていることがわかりました。そのシステムで使用されているメール サーバーは、メールの送受信に SSL 検証を使用しており、メールを 1 回に 1 回受信します。 30 分。プログラムが厳密に書かれていなかったため、上記のエラーが発生しました。プログラムを改良した結果、最終的に 2 つのシステムが 1 つの TOMCAT 内で共存できるようになりました。
以上がJava Mail で SSL 接続と非 SSL 接続の両方を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。