SSLを使用せずにポート25で電子メールを送信しようとしていますが、SSLHandshakeExceptionが発生します。以下に、javax.mail.SessionとSSLHandshakeExceptionによって出力されたデバッグメッセージを示します。
何が起こっているのか理解するのを手伝ってもらえますか?
2009年12月22日15:13:21,054 INFO root:197-デバッグ:setDebug:JavaMailバージョン1.4ea 2009年12月22日15:13:21,059情報ルート:197-デバッグ:getProvider()がjavax.mail.Provider [TRANSPORT、smtp、com.sun.mail.smtp.SMTPTransport、Sun Microsystems、Inc]を返します 2009年12月22日15:13:21,103 INFO root:197-DEBUG SMTP:useEhlo true、useAuth false 2009年12月22日15:13:21,103 INFO root:197-DEBUG SMTP:ホスト "mail.abcdef.com"、ポート25、isSSLfalseに接続しようとしています 2009年12月22日15:13:21,338 INFO root:197-220 mail.uvwxyz.com ESMTP abcdef Mail Server v8.0; 2009年12月22日火曜日15:12:10-0700 2009年12月22日15:13:21,338情報ルート:197-デバッグSMTP:ホスト「mail.abcdef.com」に接続、ポート:25 2009年12月22日15:13:21,342 INFOルート:197-EHLO fsb160 2009年12月22日15:13:21,383 INFO root:197-250-mail.uvwxyz.comこんにちはfsb160 [65.124.157.54]、お会いできてうれしいです。 250-拡張ステータスコード 250サイズ 250-EXPN 250-ETRN 250-ATRN 250-DSN 250-チェックポイント 250-8BITMIME 250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN 250-AUTH = LOGIN 250-STARTTLS 250ヘルプ 2009年12月22日15:13:21,383情報ルート:197-デバッグSMTP:拡張子 "ENHANCEDSTATUSCODES"、arg""が見つかりました 2009年12月22日15:13:21,383情報ルート:197-デバッグSMTP:拡張子 "SIZE"、arg""が見つかりました 2009年12月22日15:13:21,384情報ルート:197-デバッグSMTP:拡張子 "EXPN"、arg""が見つかりました 2009年12月22日15:13:21,384情報ルート:197-デバッグSMTP:拡張子 "ETRN"、arg""が見つかりました 2009年12月22日15:13:21,384情報ルート:197-デバッグSMTP:拡張子 "ATRN"、arg""が見つかりました 2009年12月22日15:13:21,384情報ルート:197-デバッグSMTP:拡張子 "DSN"、arg""が見つかりました 2009年12月22日15:13:21,385情報ルート:197-デバッグSMTP:拡張子 "CHECKPOINT"、arg""が見つかりました 2009年12月22日15:13:21,385 INFO root:197-DEBUG SMTP:拡張子 "8BITMIME"、arg""が見つかりました 2009年12月22日15:13:21,385 INFO root:197-DEBUG SMTP:拡張子 "AUTH"、arg "CRAM-MD5 DIGEST-MD5LOGINPLAIN"が見つかりました 2009年12月22日15:13:21,385 INFO root:197-DEBUG SMTP:拡張子 "AUTH = LOGIN"、arg""が見つかりました 2009年12月22日15:13:21,386情報ルート:197-デバッグSMTP:拡張子 "STARTTLS"、arg""が見つかりました 2009年12月22日15:13:21,386情報ルート:197-デバッグSMTP:拡張子 "HELP"、arg""が見つかりました 2009年12月22日15:13:21,389情報ルート:197-STARTTLS 2009年12月22日15:13:21,430 INFO root:197-2202.0.0TLSを開始する準備ができました 2009年12月22日15:13:21,809情報ルート:197-EHLO fsb160 2009年12月22日15:13:21,886警告E:314-電子メールの送信に失敗しました javax.mail.MessagingException:SMTPホストにコマンドを送信できません。 ネストされた例外は次のとおりです。 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な認証パスが見つかりません com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)で com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408)で com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847)で com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384)で javax.mail.Service.connect(Service.java:275)で javax.mail.Service.connect(Service.java:156)で java.lang.Thread.run(不明なソース)で 原因:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な認証パスが見つかりません com.sun.net.ssl.internal.ssl.Alerts.getSSLException(不明なソース)で com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(不明なソース)で com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(不明なソース)で com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(不明なソース)で com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(不明なソース)で com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(不明なソース)で com.sun.net.ssl.internal.ssl.Handshaker.processLoop(不明なソース)で com.sun.net.ssl.internal.ssl.Handshaker.process_record(不明なソース)で com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(不明なソース)で com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(不明なソース)で com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(不明なソース)で com.sun.net.ssl.internal.ssl.AppOutputStream.write(不明なソース)で com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)で java.io.BufferedOutputStream.flushBuffer(不明なソース)で java.io.BufferedOutputStream.flush(不明なソース)で com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418)で ...7もっと 原因:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な認証パスが見つかりません sun.security.validator.PKIXValidator.doBuild(不明なソース)で sun.security.validator.PKIXValidator.engineValidate(不明なソース)で sun.security.validator.Validator.validate(不明なソース)で com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(不明なソース)で com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(不明なソース)で com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(不明なソース)で ...19もっと 原因:sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な認証パスが見つかりません sun.security.provider.certpath.SunCertPathBuilder.engineBuild(不明なソース)で java.security.cert.CertPathBuilder.build(不明なソース)で ...25もっと
セッションの作成とサーバーへの接続に使用されるコード:
セッションsession=EmailUtilities.createSession(smtpServer、smtpPort、smtpSSL、smtpAuthentication); トランスポートtransport=session.getTransport(); transport.connect(smtpServer、smtpUser、smtpPassword); 試す { MimeMessageメッセージ=EmailUtilities.createMessage(Main.APPLICATION_NAME + "" + Main.APPLICATION_VERSION、session、to、from、subject、body、attachmentName、attachment、 "application / pdf"); transport.sendMessage(message、message.getAllRecipients()); } catch(例外e){ 新しいException(e);をスローします。 } ついに { Transportation.close(); } public static Session createSession(String smtpServer、Integer smtpPort、boolean ssl、boolean authenticate){ 文字列プロトコル="smtp"; // $ NON-NLS-1 $ if(ssl){ プロトコル="smtps"; // $ NON-NLS-1 $ } //-デフォルトのセッションにアタッチするか、新しいセッションを開始できます- プロパティprops=new Properties(); props.put( "mail.transport.protocol"、protocol); props.put("mail。"+ protocol + ".host"、smtpServer); props.put("mail。"+ protocol + ".port"、smtpPort.toString()); props.put("mail。"+ protocol + ".starttls.enable"、Boolean.TRUE.toString()); if(認証){ props.put("mail。"+ protocol + ".auth"、Boolean.TRUE.toString()); } セッションsession=Session.getDefaultInstance(props、null); session.setDebug(true); リターンセッション; }