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

API standards et tierces Java Discussion :

[JavaMail] Authentification smtp


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 18
    Points : 22
    Points
    22
    Par défaut [resolu][JavaMail] Authentification smtp
    Bonjour,

    Je cherche a utiliser JavaMail pour envoyer des mails a travers un serveur smtp nécessitant l'authentification.
    Le problème est le suivant :

    Exception in thread "main" javax.mail.AuthenticationFailedException
    at javax.mail.Service.connect(Service.java:264)
    at javax.mail.Service.connect(Service.java:134)
    at javax.mail.Service.connect(Service.java:86)
    at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:144)
    at javax.mail.Transport.send0(Transport.java:150)
    at javax.mail.Transport.send(Transport.java:80)
    at JMailSMTP.main(JMailSMTP.java:32)
    A première vue, c est simplement le login/password qui sont faux. Et bien non !
    Petit extrait du dialogue SMTP Client/Serveur :
    S : 250-AUTH LOGIN PLAIN
    C : AUTH LOGIN
    S : 334 VXNlxyzebWU6
    C : (une chaine de caractere code en base64 du user)
    S : 334 UGFzc3xuejQ6
    C : (une chaine de caractere code en base64 du password)
    S : 235 ok, go ahead
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
    mtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG SMTP: useEhlo true, useAuth true
    Exception in thread "main" javax.mail.AuthenticationFailedException blablablabla....
    2 preuves que l'authentification a réussi :
    _ le serveur smtp répond "235 ok, go ahead" (autrement il aurait répondu quelque chose comme "535 auth failure")
    _ en reprenant la procédure manuellement par telnet, j arrive sans problème a envoyer des mails en ligne de commande smtp.

    Alors pourquoi la jvm me renvoie t elle une AuthenticationFailedException alors que visiblement, l authentification se déroule bien ?

    Idées, suggestions, tout est bon a prendre.

    Merci d'avance !

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    bah comme ça c pas facile à dire...

    je crois qu'avec Javamail, et si c'est une applet ou JWS, tu ne peux utiliser que le SMTP du même serveur que celui dont le fichier est issu...

    balance un bout de code si des fois
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Solution trouvée.

    Le probleme residait dans le Transport.

    Pour ceux qui tomberait sur le meme probleme voila la classe type d envoi de mails avec JavaMail au travers d un serveur requierant l authentification :

    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
     
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
     
    public class smtpTest {
     
      public static void main (String[] args) throws Exception {
     
        String smtpHost = "smtp.xyz.com";
        String from = "originataire@origine.com";
        String to = "destinataire@destination.com";
        String username = "moi";
        String password = "mon_mot_secret";
     
        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.auth", "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();
     
      }
    }
    Mon erreur fut donc de vouloir simplifier le code en utilisant une methode plus simple.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    bonjour,
    j'ai utilisé votre code et il marche,
    je veux juste savoir comment faire pour envoyer ce email a plusieurs utilisateurs?
    merci,

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par tunbader Voir le message
    bonjour,
    j'ai utilisé votre code et il marche,
    je veux juste savoir comment faire pour envoyer ce email a plusieurs utilisateurs?
    merci,
    Il vous suffit d'invoquer en boucle la méthode addRecipient() avec chacune des adresses concernées.

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 980
    Points
    7 980
    Par défaut
    Tu peux aussi mettre [toto@dudu.com, toto2@dudu.com, toto3@dudu.com] dans l'adresse du destinataire afin de ne pas envoyer X fois le meme message en boucle et economiser de la bande passante.

    Sauf si les utilisateurs doivent recevoir un message sans les adresse des autres personnes de "la liste".
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    @ArithmeticException

    Merci beaucoup, cela fonctionne !!!
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Probleme avec ce bout de code....cela ne fonctionne pas chez moi.
    Citation Envoyé par ArithmeticException Voir le message
    Solution trouvée.

    Le probleme residait dans le Transport.

    Pour ceux qui tomberait sur le meme probleme voila la classe type d envoi de mails avec JavaMail au travers d un serveur requierant l authentification :

    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
     
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
     
    public class smtpTest {
     
      public static void main (String[] args) throws Exception {
     
        String smtpHost = "smtp.xyz.com";
        String from = "originataire@origine.com";
        String to = "destinataire@destination.com";
        String username = "moi";
        String password = "mon_mot_secret";
     
        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.auth", "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();
     
      }
    }
    Mon erreur fut donc de vouloir simplifier le code en utilisant une methode plus simple.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Probleme avec ce bout de code....cela ne fonctionne pas chez moi.
    Citation Envoyé par tunbader Voir le message
    bonjour,
    j'ai utilisé votre code et il marche,
    je veux juste savoir comment faire pour envoyer ce email a plusieurs utilisateurs?
    merci,

    Slt ce bout de code ne fonctionne pas chez moi,Merci de m'aider.
    Cdlt

  10. #10
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par ArithmeticException Voir le message
    Solution trouvée.

    Le probleme residait dans le Transport.

    Pour ceux qui tomberait sur le meme probleme voila la classe type d envoi de mails avec JavaMail au travers d un serveur requierant l authentification :

    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
     
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
     
    public class smtpTest {
     
      public static void main (String[] args) throws Exception {
     
        String smtpHost = "smtp.xyz.com";
        String from = "originataire@origine.com";
        String to = "destinataire@destination.com";
        String username = "moi";
        String password = "mon_mot_secret";
     
        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.auth", "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();
     
      }
    }
    Mon erreur fut donc de vouloir simplifier le code en utilisant une methode plus simple.
    Bsr ,
    stp ce bout de code ne donne pas chez moi,j'aimerais savoir les valeurs de username et password correspondent à quoi?
    voila mon erreur : Exception in thread "main" javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at
    535 5.7.8 https://support.google.com/mail/?p=BadCredentials 186sm21966678wmy.13 - gsmtp
    t com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:823)
    at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:756)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:673)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)

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

Discussions similaires

  1. [PHPMailer] Authentification SMTP
    Par elvan49 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 08/01/2011, 21h38
  2. [Mail] parametre d'authentification smtp
    Par moustique95 dans le forum Langage
    Réponses: 1
    Dernier message: 24/06/2008, 21h53
  3. [Javamail] Authentification obligatoire?
    Par CPI_en_mousse dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 26/08/2007, 18h09
  4. [Wamp 5] erreur authentification SMTP
    Par Jord dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 12/07/2007, 15h06
  5. Authentification smtp postfix
    Par bmamine dans le forum Réseau
    Réponses: 5
    Dernier message: 12/05/2006, 13h21

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