IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Envoi d'un mail via JAVAMAIL - Erreur (STARTTLS command first)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Par défaut Envoi d'un mail via JAVAMAIL - Erreur (STARTTLS command first)
    Bonjour,
    Je souhaite envoyer un mail via mon programme.
    Cependant et malgrer le fait que mon code soit correcte, l'envoi bloque a un moment pour m'afficher en erreur :

    Exception in thread "main" javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. co9sm20837741wjb.22 - gsmtp

    [/contents/1147-introduction-aux-systemes-unix at] com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.[/download/telecharger-34055318-java-runtime-environment java]:879)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:599)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:319)
    at com.sdzee.javamail.Javamail.main(Javamail.java:40)
    Je me suis renseigné, cela pourrait venir de l'antivirus qui bloque l'envoi des mails ou bien du paramétrage du compte mail. J'ai désactivé mon antivirus et mon pare-feu sans résultat, et je n'ai rien trouvé dans le paramétrage du compte mail.
    J'ai tester beaucoup de code différent tester plusieurs autres méthodes sans sucés et je commence à désespérer.
    Voici mon code (les identifiants sont volontairement non entrer ne vous inquiétez pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    package com.sdzee.javamail;
     
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
     
    public class Javamail {
     
      public static void main (String[] args) throws Exception {
     
        String smtpHost = "smtp.gmail.com";
        String from = "monadressemail";
        String to = "ledestinataire";
        String [/contents/1347-wsh-objet-wshnetwork username] = "monlogin";
        String [/contents/64-mots-de-passe password] = "monmotdepasse";
     
        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "587");
     
     props.put("mail.smtp.starttls.enable", "true");
     
        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);
     
        MimeMessage message = new MimeMessage(session);   
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject("Hello");
        message.setText("Hello World");
     
        Transport tr = session.getTransport("smtp");
        tr.connect(smtpHost, username, password);
        message.saveChanges();
     
        // tr.send(message);
        /** Genere l'erreur. Avec l authentification, oblige d utiliser sendMessage meme pour une seule adresse... */
     
        tr.sendMessage(message,message.getAllRecipients());
        tr.close();
     
      }
    }
    Et voila le cheminement que fait mon programme quand je l'exécute :
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG [/contents/536-les-protocoles-de-messagerie-smtp-pop3-et-imap4 SMTP]: useEhlo true, useAuth true

    DEBUG: SMTPTransport trying to connect to host "smtp.gmail.com", port 587

    DEBUG SMTP RCVD: 220 mx.google.com ESMTP co9sm20837741wjb.22 - gsmtp

    DEBUG: SMTPTransport connected to host "smtp.gmail.com", port: 587

    DEBUG SMTP SENT: EHLO Monpc-PC
    DEBUG SMTP RCVD: 250-mx.google.com at your service, [88.189.31.2]
    250-SIZE 35882577
    250-8BITMIME
    250-STARTTLS
    250-ENHANCEDSTATUSCODES
    250 CHUNKING

    DEBUG SMTP Found extension "SIZE", arg "35882577"
    DEBUG SMTP Found extension "8BITMIME", arg ""
    DEBUG SMTP Found extension "STARTTLS", arg ""
    DEBUG SMTP Found extension "ENHANCEDSTATUSCODES", arg ""
    DEBUG SMTP Found extension "CHUNKING", arg ""
    DEBUG SMTP: use8bit false
    DEBUG SMTP SENT: MAIL FROM:<monadressemail>
    DEBUG SMTP RCVD: 530 5.7.0 Must issue a STARTTLS command first. co9sm20837741wjb.22 - gsmtp
    Pour tomber sur l'erreur :
    Exception in thread "main" javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. co9sm20837741wjb.22 - gsmtp

    at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:879)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:599)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:319)
    at com.sdzee.javamail.Javamail.main(Javamail.java:40)
    Si quelqu'un a la moindre idée du problème (j'ai déjà tester d'autres ports, serveurs smtp, adresses e-mail), ou bien un code qui fonctionnerais cela m'aiderais grandement.
    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    La question est si souvent posée qu'elle est carrément dans la FAQ de JavaMail.

    En résumé :
    - getInstance(), pas getDefaultInstance() ! D'où vient ce Default, qui est responsable de ça ? Je veux un nom, des têtes vont tomber.
    - Quand on veut du TLS, le plus simple est de demander le transport "smtps" et le laisser gérer le reste comme un grand.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Par défaut
    Citation Envoyé par thelvin Voir le message
    La question est si souvent posée qu'elle est carrément dans la FAQ de JavaMail.

    En résumé :
    - getInstance(), pas getDefaultInstance() ! D'où vient ce Default, qui est responsable de ça ? Je veux un nom, des têtes vont tomber.
    - Quand on veut du TLS, le plus simple est de demander le transport "smtps" et le laisser gérer le reste comme un grand.
    Bonsoir,
    Merci de ta réponse.

    J'ai donc remplacer le getDefaultInstance() par getInstance() et j'ai également enlevé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    props.put("mail.smtp.starttls.enable", "true");
    , mais le problème persiste, à noter que le problème n'est pas forcément lié à gmail mais aussi à d'autre serveur smtp (j'ai tester hotmail avec des adresses mails hotmail).

    Ps : dans la doc il précise :
    Q: I get "Must issue a STARTTLS command first" when trying to send a message.
    A: Your SMTP server wants you to switch from a plain text connection to a secure connection using the STARTTLS command. You can enable use of this command by setting the Session property "mail.smtp.starttls.enable" to "true". This will cause the SMTP protocol provider to issue the STARTTLS command after connecting to the server. See the file SSLNOTES.txt for additional information. Also, the javadocs for the com.sun.mail.smtp package has more information on the properties that can be set.

    Note that your server is most likely also going to want you to authenticate, as described in this entry.
    du coup je pense qu'il faut laisser la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    props.put("mail.smtp.starttls.enable", "true");

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Par défaut
    Finalement j'ai réussi à résoudre mon problème grâce à ces paramètre que j'ai trouvé dans la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     props.setProperty("mail.smtp.ssl.enable", "true");
        props.setProperty("mail.smtp.ssl.socketFactory.class",
    					"DummySSLSocketFactory");
        props.setProperty("mail.smtp.ssl.socketFactory.fallback", "false");
    Je n'ai pas indiqué le port.

    Merci pour ton aide !

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    J'ai aucun besoin de tout ça pour faire marcher gmail chez moi, il me suffit de demander le transport smtps au lieu de smtp.

    Mais si tu avais un problème de ton côté et que tu l'as résolu, c'est good
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur lors de l'envoie d'un mail via Outlook
    Par Zoethibault dans le forum VBA Access
    Réponses: 6
    Dernier message: 14/12/2011, 09h30
  2. Envoi d'un mail via outlook avec l'option de vote
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2008, 11h23
  3. Envoie d'e-mail via apache
    Par Mister_FX dans le forum Apache
    Réponses: 2
    Dernier message: 25/01/2007, 17h28
  4. Envoie de mail via SMTP : erreur
    Par vince2005 dans le forum Modules
    Réponses: 5
    Dernier message: 29/03/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo