web-dev-qa-db-fra.com

javax.net.ssl.SSLException lors de l'envoi de courrier à l'aide de JavaMail

javax.mail.MessagingException: Exception reading response;
  nested exception is:
        javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
        at com.Sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.Java:1764)
        at com.Sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.Java:1523)
        at com.Sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.Java:453)
        at javax.mail.Service.connect(Service.Java:313)
        at javax.mail.Service.connect(Service.Java:172)
        at javax.mail.Service.connect(Service.Java:121)
        at javax.mail.Transport.send0(Transport.Java:190)
        at javax.mail.Transport.send(Transport.Java:120)
        at javaapplication5.SendMail.send(SendMail.Java:77)
        at javaapplication5.SendMailTest.main(SendMailTest.Java:17)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
        at com.Sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.Java:523)
        at com.Sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.Java:355)
        at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:789)
        at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1112)
        at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.Java:744)
        at com.Sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.Java:75)
        at com.Sun.mail.util.TraceInputStream.read(TraceInputStream.Java:106)
        at Java.io.BufferedInputStream.fill(BufferedInputStream.Java:218)
        at Java.io.BufferedInputStream.read(BufferedInputStream.Java:237)
        at com.Sun.mail.util.LineInputStream.readLine(LineInputStream.Java:84)
        at com.Sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.Java:1742)
        ... 9 more

Quelqu'un peut-il m'aider à envoyer un courrier à l'aide de l'API JavaMail à l'aide d'un proxy?

23
Rajesh Kumar J

Vous essayez d'établir une connexion SSL avec un port non SSL. Cela ne fonctionnera pas.

Si vous souhaitez envoyer un courrier via Gmail, consultez la FAQ: http://Java.Sun.com/products/javamail/FAQ.html#gmail

15

Je recevais la même exception lorsque j'essayais d'envoyer un courrier électronique via le serveur SMTP Hotmail à l'adresse smtp.live.com. Voici les paramètres qui ont fonctionné pour moi à la fin:

mail.smtp.starttls.enable=true 
mail.smtp.port=587
7
BungleFeet

Si vous ne souhaitez pas utiliser SSL et que vous utilisez smtp au lieu de smtps, essayez ces paramètres.

mail.smtp.starttls.enable=false
mail.transport.protocol=smtp
2
Erich

Comme Andersen a répondu, établir une connexion SSL (mail.smtp.ssl.enable=true) sur un port non-SSL provoquera cette erreur.

Cela est généralement dû à la connexion au mauvais port, car de nombreux services de messagerie courants utilisent le port 587 au lieu du port smtps par défaut 465 . Ceci s'applique à GMail , Hotmail/Live Mail et Yahoo Mail .

Mon problème, cependant, est que Java Mail insiste sur l’utilisation de SSL même lorsque je mets ssl à false.

Après avoir tracé le code source, le problème est que j’ai utilisé Session.getDefaultInstance , copié à partir d’un exemple de code . Il ne crée qu’une session avec les propriétés données lors du premier appel; les appels de sous-séquence renverront cette ancienne session au lieu d'une nouvelle session.

Si vous passez à Session.getInstance , assurez-vous qu’il utilise les propriétés que j’ai transmises et a résolu mon "message SSLException: Unrecognized SSL".

2
Sheepy

J'étais confronté à ce problème lorsque j'utilisais Gmail.

Pour pouvoir utiliser Gmail, je devais activer "Autoriser les applications moins sécurisées".

Ce paramètre Gmail se trouve à l'adresse suivante: https://www.google.com/settings/security/lesssecureapps après la connexion au compte gmail.

0
Jose1755