2

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

    リターンセッション;
}
4

1 に答える 1

6

プロパティでstarttlsを有効にしていないことを確認してください(mail.smtp.starttls.enable=true

于 2009-12-22T23:34:48.530 に答える