web-dev-qa-db-fra.com

Impossible de se connecter à l'hôte SMTP: smtp.gmail.com, port: 465, réponse: -1

lors de l'envoi du courrier, j'obtiens cette erreur

Java.lang.RuntimeException: javax.mail.SendFailedException: Envoi échoué; L'exception imbriquée est la suivante: class javax.mail.MessagingException: Impossible de se connecter à l'hôte SMTP: smtp.gmail.com, port: 465, réponse: -1

mon code est:

Properties props = new Properties();
props.put("mail.smtp.Host", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");

Session session = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("email","password");
                }
        });

try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("email"));
        message.setRecipients(Message.RecipientType.TO,
                        InternetAddress.parse(this.to));
        message.setSubject("Testing");
        message.setText("Hey, this is the testing email.");



        Transport.send(message);

Toute aide serait appréciée.

Merci d'avance.

18
user1900376

Vous devez lui dire que vous utilisez SSL:

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

Si vous manquez quelque chose, voici le code qui fonctionne:

String  d_email = "[email protected]",
            d_uname = "Name",
            d_password = "urpassword",
            d_Host = "smtp.gmail.com",
            d_port  = "465",
            m_to = "[email protected]",
            m_subject = "Indoors Readable File: " + params[0].getName(),
            m_text = "This message is from Indoor Positioning App. Required file(s) are attached.";
    Properties props = new Properties();
    props.put("mail.smtp.user", d_email);
    props.put("mail.smtp.Host", d_Host);
    props.put("mail.smtp.port", d_port);
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.debug", "true");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.socketFactory.port", d_port);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");

    SMTPAuthenticator auth = new SMTPAuthenticator();
    Session session = Session.getInstance(props, auth);
    session.setDebug(true);

    MimeMessage msg = new MimeMessage(session);
    try {
        msg.setSubject(m_subject);
        msg.setFrom(new InternetAddress(d_email));
        msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));

Transport transport = session.getTransport("smtps");
            transport.connect(d_Host, Integer.valueOf(d_port), d_uname, d_password);
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();

        } catch (AddressException e) {
            e.printStackTrace();
            return false;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
13
M. Usman Khan

J'ai rencontré ce problème lors du débogage à l'aide de NetBeans, même lors de l'exécution du fichier JAR réel. Antivirus bloquerait l'envoi de courrier électronique. Vous devez désactiver temporairement votre antivirus pendant le débogage ou exclure NetBeans et le fichier JAR de l'analyse. Dans mon cas, j'utilise Avast. 

Voir ce lien sur la façon d'exclure: Comment ajouter une exception de fichier/site Web dans avast! Antivirus 2014

Ça marche pour moi.

6
ronIT

Ce que j'ai fait était commenté le 

props.put("mail.smtp.starttls.enable","true"); 

Parce qu'apparemment pour G-mail, vous n'en aviez pas besoin. Ensuite, si vous ne l'avez pas déjà fait, vous devez créer un mot de passe pour l'application dans G-mail pour votre programme. Je l'ai fait et cela a fonctionné parfaitement. Ici ce lien vous montrera comment: https://support.google.com/accounts/answer/185833

1
MesamH

Dans mon cas, Avast Antivirus interférait avec la connexion . Actions pour désactiver cette fonction: . 

0
Tipxbomb

Le port 465 est pour "smtp over SSL".

http://javamail.kenai.com/nonav/javadocs/com/Sun/mail/smtp/package-summary.html

[...] For example, use
    props.put("mail.smtp.port", "888");
to set the mail.smtp.port property, which is of type int.

Note that if you're using the "smtps" protocol to access SMTP over SSL, 
all the properties would be named "mail.smtps.*"
0
AnFi