Mon programme Java a cessé d'envoyer des e-mails à l'aide de mon Compte gmail
J'ai cherché sur plusieurs postes liés à l'ici et dans d'autres endroits, mais aucun n'a résolu mon problème. J'ai un programme qui envoie des mails à un ensemble de personnes en utilisant des "API javamail". Il a bien fonctionné une fois. Aujourd'hui, j'ai encore besoin, mais je ne peut pas envoyer d'e-mail... Mon sendEmail méthode est la suivante:
public void sendEmail(String userName, String password, String toAddress,
String subject, String message, String[] attachFiles)
throws AddressException, MessagingException {
//sets SMTP properties
Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.user", userName);
properties.put("mail.password", password);
//creates a new session with an authenticator
Authenticator auth = new SMTPAuthenticator(userName, password);
Session session = Session.getInstance(properties, auth);
//creates a new e-mail message
MimeMessage msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(userName, "My name"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
InternetAddress[] toAddresses = {new InternetAddress(toAddress)};
msg.setRecipients(Message.RecipientType.TO, toAddresses);
msg.setSubject(subject);
msg.setSentDate(new Date());
//creates message part
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/html");
//creates multi-part
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
//adds attachments
if (attachFiles != null && attachFiles.length > 0) {
for (String filePath : attachFiles) {
addAttachment(multipart, filePath);
}
}
//sets the multi-part as e-mail's content
msg.setContent(multipart);
//sends the e-mail
Transport.send(msg);
}
Donc, maintenant, la tentative de faire appel à cette méthode j'ai obtenu l'erreur suivante
(Je suis à l'aide du jdk 1.7.0_21):
Sending email Failed...
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:1907)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)
at javax.mail.Service.connect(Service.java:367)
at javax.mail.Service.connect(Service.java:226)
at javax.mail.Service.connect(Service.java:175)
at javax.mail.Transport.send0(Transport.java:253)
at javax.mail.Transport.send(Transport.java:124)
at EmailSender.sendEmail(EmailSender.java:86)
at CFP_LaWasp_EmailSender.sendCFPLaWasp(CFP_LaWasp_EmailSender.java:178)
at CFP_LaWasp_EmailSender.main(CFP_LaWasp_EmailSender.java:220)
Caused by: 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 sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:528)
at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:465)
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1902)
... 9 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323)
... 19 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
... 25 more
Je ne sais pas comment résoudre ce problème, puisque ça marchait avant... Aussi, je ne sais pas si mon Gmail a quelque chose à voir avec cela (si il bloque cet accès...)
J'apprécie toute l'aide.
OriginalL'auteur user2484053 | 2013-06-13
Vous devez vous connecter pour publier un commentaire.
La clé d'erreur est: est-ce
Causés par: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide pour demandé cible
Voir cette JavaMail entrée de la FAQ.
Depuis que vous vous connectez à Gmail, cela ne devrait pas arriver. Les causes les plus probables sont:
Vos conseils m'a beaucoup aidé 🙂
Cela a aidé à sortir... dans mon cas, avast l'a fait.
Merci, j'ai passé 2 heures pour trouver la solution à 'PKIX chemin de bâtiment échoué", enfin, il était sacrément avast.
J'ai aussi été Avast dans mon cas. Voici comment résoudre le problème: warriorforum.com/main-internet-marketing-discussion-forum/...
OriginalL'auteur Bill Shannon
J'ai été aux prises avec cette erreur pour plusieurs heures. J'ai essayé d'installer le Serveur de certificats à l'aide de la réponse fournie par Bil Shannon. Rien n'a fonctionné.
Mon problème était l'Antivirus AVAST. Une fois que j'ai désactivé Avast Mail Bouclier, j'ai été en mesure d'envoyer des mails via gmail compte à partir de mon application web.
À droite, c'était mon premier point ci-dessus.
OriginalL'auteur razvang
J'ai eu ce problème avec java 8. Après la mise à jour de cette propriété problème résolu
propriétés.put("mail.smtp.le protocole ssl.confiance", "smtp.gmail.com")
si elle est utilisée printemps de démarrage de l'application.propriété
printemps.mail.les propriétés.mail.smtp.le protocole ssl.confiance = smtp.gmail.com
OriginalL'auteur Asanka
J'ai résolu mon problème avec:
et quand je suis en utilisant le printemps de démarrage
OriginalL'auteur Murilo Dantas