Java mail sans ssl - PKIX chemin d'accès du bâtiment a échoué:
Je suis à l'aide de java mail pour envoyer des e-mails via smtp. Les paramètres smtp donnée ci-dessous:
Properties props = new Properties();
Object put = props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.user", smtpUser);
props.put("mail.smtp.auth", true);
props.put("mail.debug", mailDebug);
props.put("mail.smtp.port", port);
Le smtp pouvoirs ont été vérifiés par telnet mon smtpHost avec les détails ci-dessus. Cependant, je reçois l'exception suivante lorsque j'utilise les paramètres ci-dessus en java mail.
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
DEBUG SMTP: Found extension "SIZE", arg "52428800"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "HELP", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
Nov 29, 2012 11:54:40 AM com.Test main
SEVERE: null
javax.mail.AuthenticationFailedException: 535 Incorrect authentication data
Quand j'ai ajouter la ligne :
props.put("mail.smtp.starttls.enable", false);
Nouveau génère le même échec de l'authentification d'exception.
Si j'ai mis mail.smtp.starttls.activer à vrai, l'authentification réussit, mais j'obtiens l'exception suivante:
220 TLS go ahead
Nov 28, 2012 5:32:36 PM com.Test main
SEVERE: null
javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
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
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1918)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:652)
at javax.mail.Service.connect(Service.java:317)
Après être passé par différentes discussions sur le forum concernant la deuxième exception, j'ai couru le InstallCert programme pour récupérer le serveur de certificat auto-signé. Le InstallCert jette l'exception suivante:
Opening connection to mydomain.com.au:443...
Starting SSL handshake...
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:542)
at sun.security.ssl.InputRecord.read(InputRecord.java:374)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:850)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1190)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1217)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1201)
at InstallCert.main(InstallCert.java:100)
Could not obtain server certificate chain
Donc, on dirait que mon serveur n'a pas de ssl, mais starttls est activé. Quels sont les paramètres corrects pour l'envoi de mail avec STARTTLS sur, à un serveur avec pas de ssl?
Vous devez vous connecter pour publier un commentaire.
Cette JavaMail entrée de la FAQ devrait aider.
Essayez d'utiliser MailSSLSocketFactory comme ceci:
A fonctionné pour moi
:)
J'ai eu ce problème avec java 8. Après la mise à jour de cette propriété problème résolu
Je pense que cela va aider.