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 Envoi mail Exception


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut JavaMail Envoi mail Exception
    J'ai codé une application, et je veux utiliser l'envoi de mails, j'ai trouvé ce code sur le net :
    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
    package envoiMail;
     
    import javax.mail.internet.*;
    import javax.mail.*;
    import java.util.*;
     
    /**
     * Classe permettant d'envoyer un mail.
     */
    public class TestMail {
       private final static String MAILER_VERSION = "Java";
       public static boolean envoyerMailSMTP(String serveur, boolean debug) {
             boolean result = false;
             try {
                      Properties prop = System.getProperties();
                      prop.put("mail.smtp.host", serveur);
                      Session session = Session.getDefaultInstance(prop,null);
                      Message message = new MimeMessage(session);
                      message.setFrom(new InternetAddress("moi@gmail.com"));
                      InternetAddress[] internetAddresses = new InternetAddress[1];
                      internetAddresses[0] = new InternetAddress("moimeme@gmail.com");
                      message.setRecipients(Message.RecipientType.TO,internetAddresses);
                      message.setSubject("Test");
                      message.setText("test mail");
                      message.setHeader("X-Mailer", MAILER_VERSION);
                      message.setSentDate(new Date());
                      session.setDebug(debug);
                      Transport.send(message);
                      result = true;
             } catch (AddressException e) {
                      e.printStackTrace();
             } catch (MessagingException e) {
                      e.printStackTrace();
             }
             return result;
       }
     
       public static void main(String[] args) {
             TestMail.envoyerMailSMTP("smtp.gmail.com",true);
       }
    }
    Et quand je le teste, j'ai cette exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DEBUG SMTP: useEhlo true, useAuth false
    DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 25, isSSL false
    javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 25;
      nested exception is:
    	java.net.ConnectException: Connection timed out: connect
    	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
    	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
    	at javax.mail.Service.connect(Service.java:275)
    	at javax.mail.Service.connect(Service.java:156)
    	at javax.mail.Service.connect(Service.java:105)
    	at javax.mail.Transport.send0(Transport.java:168)
    	at javax.mail.Transport.send(Transport.java:98)
    	at envoiMail.TestMail.envoyerMailSMTP(TestMail.java:28)
    	at envoiMail.TestMail.main(TestMail.java:39)
    je ne comprends pas un truc, pour envoyer un mail depuis la messagerie "moi@gmail.com", on doit pouvoir y accéder, mais dans le code, on ne spécifie nul part le password, et je pense que c'est ca qui bloque...

    une idée ?

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, à propos du mot de passe pour GMail, tu trouveras un exemple qui fonctionne dans cette discussion. Il y a également d'autres propriétés que tu aurais pu oublier de préciser.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Je vous remercie CheryBen, CyberChouan pour vos réponses :

    j'ai bien testé le code de la discussion et ca marche,

    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
    45
    46
    47
     
    private final static String MAILER_VERSION = "Java";
       public static boolean envoyerMailSMTP(String serveur, boolean debug) {
                    boolean result = false;
             	String emailFrom = "toto@gmail.com";
    		String emailTo = "tata@gmail.com";		
    		String messageText = "test Javamail";
    		String subject = "Ceci est un test Javamail";
    		try 
    		{   
    			System.out.println("debut du mailing");
    			Properties props = System.getProperties();
    			// laisser "mail.smtp.host" en dur
     
    			props.put("mail.smtp.host", serveur);
    			props.put("mail.smtp.auth", "true");
    			props.put("mail.smtp.port", "465");
    			props.put("mail.smtp.socketFactory.port", "465");
    			props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    			props.put("mail.smtp.socketFactory.fallback", "false");
    			System.out.println("initialisation du props");
    			// javax.mail.Session pour que ça fonctionne aussi avec WebObjects
    			Session session = Session.getDefaultInstance(props, new MyAuthenticator());
    			System.out.println("initialisation session");
    			MimeMessage message = new MimeMessage(session);
     
    			message.setFrom(new InternetAddress(emailFrom));
    			message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailTo));
    			//message.addRecipient(Message.RecipientType.CC, new InternetAddress(emailCc));
    			message.setSubject(subject);
    			message.setText(messageText);
    			System.out.println("message prêt a être envoyé");
    			Transport.send(message);
    			System.out.println("mail envoyé");
    		} 
    		catch (AddressException e) {
    			e.printStackTrace();
    		} 
    		catch (MessagingException e) {
    			e.printStackTrace();
    		}
             return result;
       }
     
       public static void main(String[] args) {
             TestMail.envoyerMailSMTP("smtp.gmail.com",true);
       }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class MyAuthenticator extends javax.mail.Authenticator {
    	protected PasswordAuthentication getPasswordAuthentication() {
    		return new PasswordAuthentication("toto", "motdepasse"); 
    	}
    }
    mais j'ai 2 problèmes :

    1- je n'arrive pas à envoyer un mail vers une messagerie autre que gmail, et ca c'est un handicap...

    2- Je ne pense pas que c'est une bonne idée de coder en dur le mot de passe dans la classe MyAuthenticator, je veux le mettre dans un fichier .properties et aller le récupérer...je ne sais comment on peut le faire...

    Merci par avance

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Ok, ca marche, Merci de votre aide...

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par reneguenon Voir le message
    je ne comprends pas un truc, pour envoyer un mail depuis la messagerie "moi@gmail.com", on doit pouvoir y accéder, mais dans le code, on ne spécifie nul part le password, et je pense que c'est ca qui bloque...

    une idée ?
    Regarde donc la solution que t'a proposée Cheryben.
    Tu verras tout ce qui te manque. En particulier:

    - la méthode setFrom() fixe l'expéditeur de ton mail... mais en aucun cas le login de connexion. Il te manque donc à la fois le login et le mot de passe.
    - GMail n'accepte que les connexions sécurisées: il faut utiliser un cryptage (TLS) dans ton identification et passer par un port particulier (qui n'est pas le port 25)
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

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

Discussions similaires

  1. [javaMail] envoi mail avec authentification
    Par totofe dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 30/09/2009, 14h24
  2. [javamail] envoi mail avec message en pièce jointe
    Par k4eve dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/11/2007, 11h17
  3. [JavaMail] envoi de mails en java
    Par franfr57 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/01/2007, 19h33
  4. [Javamail] Envoi mail avec plusieurs smtp
    Par igloof dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 02/11/2006, 12h08
  5. JavaMail:Envoi de Mail
    Par gagalive dans le forum API standards et tierces
    Réponses: 21
    Dernier message: 28/06/2006, 17h53

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