Java Mail: SSLHandshakeException lors de l'envoi d'e-mail sur le port 25, sans SSL

Bien que je suis en train d'envoyer un e-mail sur le port 25, sans SSL, j'obtiens un SSLHandshakeException. Ci-dessous vous pouvez voir les messages de débogage imprimé par javax.mail.Session et la SSLHandshakeException.

Pouvez-vous m'aider à comprendre ce qui se passe?

22 Déc 2009 15:13:21,054 INFO root:197 - DEBUG: setDebug: JavaMail version 1.4 ea 
Le 22 Décembre 2009 à 15:13:21 059 des INFO root:197 - DEBUG: getProvider() pour retourner javax.mail.Fournisseur[TRANSPORT,smtp,com.soleil.mail.smtp.SMTPTransport,Sun Microsystems, Inc] 
Le 22 Décembre 2009 à 15:13:21,103 INFO root:197 - DEBUG SMTP: useEhlo vrai, useAuth faux 
Le 22 Décembre 2009 à 15:13:21,103 INFO root:197 - DEBUG SMTP: essayez de vous connecter à l'hôte "mail.abcdef.com" port 25, isSSL faux 
Le 22 Décembre 2009 à 15:13:21,338 INFO root:197 - 220 mail.uvwxyz.com ESMTP abcdef Mail Server v8.0; Tue, 22 Dec 2009 15:12:10 -0700 
Le 22 Décembre 2009 à 15:13:21,338 INFO root:197 - DEBUG SMTP: connecté à l'hôte "mail.abcdef.com", port: 25 
Le 22 Décembre 2009 à 15:13:21,342 INFO root:197 - EHLO fsb160 
Le 22 Décembre 2009 à 15:13:21,383 INFO root:197 - 250-mail.uvwxyz.com Bonjour fsb160 [65.124.157.54], heureux de vous rencontrer. 
250-ENHANCEDSTATUSCODES 
250-TAILLE 
250-EXPN 
250-ETRN 
250-ATRN 
250-DSN 
250-point de contrôle 
250-8BITMIME 
250-AUTH CRAM-MD5 DIGEST-MD5 CONNEXION PLAINE 
250-AUTH=LOGIN 
250-STARTTLS 
250 AIDER 
Le 22 Décembre 2009 à 15:13:21,383 INFO root:197 - DEBUG SMTP: Trouvé extension "ENHANCEDSTATUSCODES", arg "" 
Le 22 Décembre 2009 à 15:13:21,383 INFO root:197 - DEBUG SMTP: Trouvé extension "TAILLE", arg "" 
Le 22 Décembre 2009 à 15:13:21,384 INFO root:197 - DEBUG SMTP: Trouvé extension "EXPN", arg "" 
Le 22 Décembre 2009 à 15:13:21,384 INFO root:197 - DEBUG SMTP: Trouvé extension "ETRN", arg "" 
Le 22 Décembre 2009 à 15:13:21,384 INFO root:197 - DEBUG SMTP: Trouvé extension "ATRN", arg "" 
Le 22 Décembre 2009 à 15:13:21,384 INFO root:197 - DEBUG SMTP: Trouvé extension "DSN", arg "" 
Le 22 Décembre 2009 à 15:13:21,385 INFO root:197 - DEBUG SMTP: Trouvé extension "point de contrôle", arg "" 
Le 22 Décembre 2009 à 15:13:21,385 INFO root:197 - DEBUG SMTP: Trouvé extension "8BITMIME", arg "" 
Le 22 Décembre 2009 à 15:13:21,385 INFO root:197 - DEBUG SMTP: Trouvé extension "AUTH", arg "CRAM-MD5 DIGEST-MD5 de CONNEXION de la PLAINE" 
Le 22 Décembre 2009 à 15:13:21,385 INFO root:197 - DEBUG SMTP: Trouvé extension "AUTH=LOGIN", arg "" 
Le 22 Décembre 2009 à 15:13:21,386 INFO root:197 - DEBUG SMTP: Trouvé extension "STARTTLS", arg "" 
Le 22 Décembre 2009 à 15:13:21,386 INFO root:197 - DEBUG SMTP: Trouvé extension "AIDE", arg "" 
Le 22 Décembre 2009 à 15:13:21,389 INFO root:197 - STARTTLS 
Le 22 Décembre 2009 à 15:13:21,430 INFO root:197 - 220 2.0.0 Prêt à démarrer TLS 
Le 22 Décembre 2009 à 15:13:21,809 INFO root:197 - EHLO fsb160 
Le 22 Décembre 2009 à 15:13:21,886 AVERTIR E:314 - Impossible d'envoyer un email 
javax.mail.MessagingException: ne Peut pas envoyer de commande hôte SMTP; 
nested exception est la suivante: 
javax.net.le protocole ssl.SSLHandshakeException: le soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin d'accès du bâtiment a échoué: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide à la demande de la cible 
au com.soleil.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420) 
au com.soleil.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408) 
au com.soleil.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847) 
au com.soleil.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384) 
au javax.mail.Service.connect(Service de.java:275) 
au javax.mail.Service.connect(Service de.java:156) 
à java.lang.Fil de discussion.run(Unknown Source) 
Causés par: javax.net.le protocole ssl.SSLHandshakeException: le soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin d'accès du bâtiment a échoué: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide à la demande de la cible 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.Les alertes.getSSLException(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.SSLSocketImpl.fatale(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.Handshaker.fatalSE(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.Handshaker.fatalSE(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.ClientHandshaker.serverCertificate(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.ClientHandshaker.processMessage(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.Handshaker.processLoop(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.Handshaker.process_record(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.SSLSocketImpl.readRecord(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.SSLSocketImpl.performInitialHandshake(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.SSLSocketImpl.writeRecord(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.AppOutputStream.écrire(Source Inconnue) 
au com.soleil.mail.util.TraceOutputStream.écrire(TraceOutputStream.java:101) 
à java.io.BufferedOutputStream.flushBuffer(Source Inconnue) 
à java.io.BufferedOutputStream.flush(Source Inconnue) 
au com.soleil.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418) 
... 7 plus 
Causés par: le soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin d'accès du bâtiment a échoué: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide à la demande de la cible 
au coucher du soleil.de sécurité.programme de validation.PKIXValidator.doBuild(Source Inconnue) 
au coucher du soleil.de sécurité.programme de validation.PKIXValidator.engineValidate(Source Inconnue) 
au coucher du soleil.de sécurité.programme de validation.Programme de validation.valider(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.X509TrustManagerImpl.valider(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.X509TrustManagerImpl.checkServerTrusted(Source Inconnue) 
au com.soleil.net.le protocole ssl.interne.le protocole ssl.X509TrustManagerImpl.checkServerTrusted(Source Inconnue) 
... 19 plus 
Causés par: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide à la demande de la cible 
au coucher du soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilder.engineBuild(Source Inconnue) 
à java.de sécurité.cert.CertPathBuilder.construire(Source Inconnue) 
... Plus de 25 

Le code utilisé pour créer la session et de se connecter au serveur:

Session session = EmailUtilities.createSession(smtpServer, smtpPort, smtpSSL, smtpAuthentication); 

De Transport de transport = session.getTransport(); 
de transport.connect(smtpServer, smtpUser, smtpPassword); 

try { 
MimeMessage message = EmailUtilities.createMessage(Principale.APPLICATION_NAME + "" + Main.APPLICATION_VERSION, séance, à, de, objet, corps, attachmentName, l'attachement, "application/pdf"); 
de transport.sendMessage(message, message.getAllRecipients()); 
} catch (Exception e) { 
throw new Exception(e); 
} finally { 
de transport.close(); 
} 


public static Session createSession(String smtpServer, Entier smtpPort, boolean ssl, boolean authentifier) { 
Chaîne de protocole = "smtp"; //$NON-NLS-1$ 
si le protocole ssl () { 
protocole = "smtps"; //$NON-NLS-1$ 
} 

//-- Fixation de Session par défaut, ou nous pourrions commencer une nouvelle -- 
Properties props = new Properties(); 
accessoires de jeu.put("mail.de transport.protocol", protocole); 
accessoires de jeu.put("mail". + protocol + ".d'accueil", smtpServer); 
accessoires de jeu.put("mail". + protocol + ".port", smtpPort.toString()); 
accessoires de jeu.put("mail". + protocol + ".starttls.activer", Booléenne.VRAI.toString()); 

si (authentifier) { 
accessoires de jeu.put("mail". + protocol + ".auth", Booléenne.VRAI.toString()); 
} 

Session session = Session.getDefaultInstance(accessoires, null); 
session.setDebug(true); 

de retour de la session; 
} 
  • Peux-tu montrer ton code?
  • Il serait également utile de savoir qui JavaMail la mise en œuvre et la version que vous utilisez.
  • J'ai juste mis à jour la question avec le code que j'utilise pour créer la session et de se connecter au serveur. @Jim, je suis en utilisant Java Mail 1.4.
InformationsquelleAutor Nicu | 2009-12-22