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 :

Problème lors de l'envoie d'un mail (JavaMail)


Sujet :

API standards et tierces Java

  1. #1
    Invité
    Invité(e)
    Par défaut Problème lors de l'envoie d'un mail (JavaMail)
    Bonsoir.

    Voilà je suis actuellement en Chine et donc connecté à un provider chinois. J'ai fait un ptit programme qui envoie juste un mail à l'adresse souhaité. Je veux utiliser le serveur smtp de free (ou même de wanadoo) mais il me fait une erreur que je ne comprend pas (mon username est correcte et mon mot de passe aussi ... quelqu'un peut-il m'expliquer où est le problème s'il vous plaît car là je ne vois pas.

    Ma classe Email
    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
    48
    49
    50
    51
    52
    53
    package test;
     
    import java.util.*;
    import javax.mail.internet.*;
    import javax.mail.*;
     
    public class Email{
    	private String messageTo, messageFrom, subject;
     
            public boolean mail(String messageTo, String messageFrom, String subject)
    	{
    		this.messageTo = messageTo;
    		this.messageFrom = messageFrom;
    		this.subject = subject;
    		boolean result = false;	
     
    	try{
    		Properties props = new Properties();
    		props.put("mail.smtp.host", "smtp.wanadoo.fr");
    		//props.put("mail.smtp.auth", mon_password);
     
    		Session session;
    		session = Session.getDefaultInstance(props, null);
    		session.setDebug(true);
     
    		InternetAddress free = new InternetAddress("smtp.wanadoo.fr");
    		Transport transport = session.getTransport(free);
    		transport.connect("smtp.wanadoo.fr", "mon_username", "mon_password");
     
    		Message message = new MimeMessage(session);
     
    		InternetAddress addressFrom = new InternetAddress(messageFrom);
    		message.setFrom(addressFrom);
     
    		InternetAddress addressTo = new InternetAddress(messageTo);
    		message.addRecipient(Message.RecipientType.TO, addressTo);
     
    		message.setSubject(subject);
    		message.setText("Juste pour tester le mail.");
    		//String texte = "<H1>test</H1>";
    		//message.setContent(texte, "text/html");
     
    		Transport.send(message);
     
    		} catch (AddressException e) {
    			e.printStackTrace();
    		} catch (MessagingException e) {
            	e.printStackTrace();
    		}
     
    		return result = true;
    	}
    }
    Ma classe Send
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package test;
     
    import test.Email;
     
    public class Send {
     
    	public static void main(String[] args) {
    		Email email = new Email();
    		email.mail("email_destinataire", "email_expediteur", "test encore");
    	}
    }
    Voici ce que me sort le Debug :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    DEBUG: setDebug: JavaMail version 1.4ea
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG SMTP: useEhlo true, useAuth false
    DEBUG SMTP: trying to connect to host "smtp.wanadoo.fr", port 25, isSSL false
    220 mwinf0109.wanadoo.fr ESMTP **************************
    DEBUG SMTP: connected to host "smtp.wanadoo.fr", port: 25
     
    EHLO nico
    250-mwinf0109.wanadoo.fr
    250-PIPELINING
    250-SIZE 20971520
    250 8BITMIME
    DEBUG SMTP: Found extension "PIPELINING", arg ""
    DEBUG SMTP: Found extension "SIZE", arg "20971520"
    DEBUG SMTP: Found extension "8BITMIME", arg ""
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG SMTP: useEhlo true, useAuth false
    DEBUG SMTP: trying to connect to host "smtp.wanadoo.fr", port 25, isSSL false
    220 mwinf0109.wanadoo.fr ESMTP **************************
    DEBUG SMTP: connected to host "smtp.wanadoo.fr", port: 25
     
    EHLO nico
    250-mwinf0109.wanadoo.fr
    250-PIPELINING
    250-SIZE 20971520
    250 8BITMIME
    DEBUG SMTP: Found extension "PIPELINING", arg ""
    DEBUG SMTP: Found extension "SIZE", arg "20971520"
    DEBUG SMTP: Found extension "8BITMIME", arg ""
    DEBUG SMTP: use8bit false
    MAIL FROM:<email_exp>
    250 Ok
    RCPT TO:<email_dest>
    554 <email_dest>: Relay access denied
    DEBUG SMTP: Invalid Addresses
    DEBUG SMTP:   email_dest
    DEBUG SMTP: Sending failed because of invalid destination addresses
    RSET
    250 Ok
    javax.mail.SendFailedException: Invalid Addresses
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1161)
    	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:554)
    	at javax.mail.Transport.send0(Transport.java:169)
    	at javax.mail.Transport.send(Transport.java:98)
    	at test.Email.mail(Email.java:54)
    	at test.Send.main(Send.java:16)
    Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 554 <email_dest>: Relay access denied
     
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1059)
    	... 5 more
    QUIT
    221 Bye
    javax.mail.SendFailedException: Invalid Addresses
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1161)
    	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:554)
    	at javax.mail.Transport.send0(Transport.java:169)
    	at javax.mail.Transport.send(Transport.java:98)
    	at test.Email.mail(Email.java:54)
    	at test.Send.main(Send.java:16)
    Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 554 <email_dest>: Relay access denied
     
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1059)
    	... 5 more
    Alors là apparement il me dit que le mail de l'expéditeur n'est pas bon (je ne vois pas pourquoi).

    Une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    > "Relay access denied"
    Et effectivement, je ne pense pas que les serveurs SMTP de free et wanadoo soit des bons samaritains qui veulent relayer tout le trafic SMTP de la planète Utilise le serveur SMTP de ton provider.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bah normalement avec mes identifiant ils ne devrait pas avoir de problèmes non ? Sinon ça veut dire qu'on ne peut pas envoyer de mail depuis son compte gmail par exemple ?

  4. #4
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Bah depuis gmail, tu utilise le SMTP de google. D'ailleurs, essaie celui la dans ton programme, il parait qu'il accepte tous les traffics.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Là il me met cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MAIL FROM:<adresse_exp>
    530 5.7.0 Must issue a STARTTLS command first z80sm1848388pyg
    com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first z80sm1848388pyg
    Enfin c'est qu'une partie mais c'est celle qui change par rapport à l'autre.

    Sinon, la question que je vais poser est peut être bête mais pourquoi je ne peux pas envoyer avec free par exemple en utilisant mes identifiants free ? Lorsque je vais sur leur site et que je me connecte à ma messagerie je n'ai pas de problèmes. C'est pas le même principe ou quoi ?

    Sinon le bout de code que j'ai fait vous semble faux ou pas ?

  6. #6
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Il est possible que la politique des SMTP de free et wanadoo soit de rejeter tout traffic étranger à leur réseau. Lorsque tu te rends sur leur interface web, pas de souci puisque la partie serveur est bien reliée au réseau du FAI.

    Vérifie donc qu'il soit possible de se logger à partir d'un réseau étranger (regarde les forums d'utilisateurs). Mais ça ne semble pas etre le cas vu le message d'erreur que tu reçois (et vu que tu as l'air bien passer tes identifiants).

    Donc la méthode la plus simple est toujours d'utiliser le serveur SMTP du FAI que l'on utilise. Sinon, pour ton problème avec google, une rapide recherche google te donne pas mal de références.

    Par exemple : http://forum.java.sun.com/thread.jsp...sageID=3469652

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 851
    Points : 22 863
    Points
    22 863
    Billets dans le blog
    51
    Par défaut
    Si le relay est refuse par le serveur SMTP il te faut alors utiliser l'authentification. Apres il peut effectivement exister des restrictions de part et d'autre t'empechant de te connecter pour que tu envoie du courrier.

    Un truc de ce genre :

    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
    48
    49
    50
    51
    52
    53
    // Create a mail session.
    java.util.Properties props = new java.util.Properties();
    // Select transport protocol.
    props.put("mail.transport.protocol", "smtp");
    // Authentication.
    => props.put("mail.smtp.auth", String.valueOf(authenticate));
    // Setup SMTP host.
    props.put("mail.smtp.host", smtpHost);
    // Setup port.
    props.put("mail.smtp.port", smtpPort);
    // Create session.
    javax.mail.Session session = javax.mail.Session.getDefaultInstance(props, null);
    javax.mail.Message msg = new javax.mail.internet.MimeMessage(session);
    // Setup sender field.
    javax.mail.internet.InternetAddress fromAddress = new javax.mail.internet.InternetAddress(from);
    msg.setFrom(fromAddress);
    // Setup recipient field.
    javax.mail.internet.InternetAddress toAddress = new javax.mail.internet.InternetAddress(to);
    msg.setRecipient(javax.mail.Message.RecipientType.TO, toAddress);
    // Setup subject field.
    msg.setSubject(subject);
    // Setup message content.
    msg.setText(content);
    // Save changes.
    msg.saveChanges();
    // Send the message
    // We used to to this:
    //Transport.send(msg);
    // Be we can't anymore because we need to authenticate.
    // We now manually open the session.
    => javax.mail.Transport transport = session.getTransport("smtp");
    try {
    // Apparently we need to connect even if we do not authenticate.
    // When no authentication : username and password are null.
      try {
         => transport.connect(smtpHost, username, password);
      }
      // Encapsulate and forward the exception.
      catch (javax.mail.AuthenticationFailedException afe) {
        ...
      }
      try {
        => transport.sendMessage(msg, msg.getAllRecipients());
      }
      // Encapsulate and forward the exception.
      catch (javax.mail.SendFailedException sfe) {
         ...
      }
    }
    finally {
      => transport.close();
    }
    Voir la FAQ chez Sun et ici aussi.

  8. #8
    Invité
    Invité(e)
    Par défaut
    ok merci

    J'ai pu le faire fonctionner avec wanadoo mais à la seule condition que l'adresse du destinataire soit @wanadoo.fr ... Avec free ça marche pas et gmail il me met une longue suite d'execptions ...

    Sinon pour envoyer les mails depuis mon fournisseur d'accès bah c'est un peu dur car je suis connecté au routeur de mon immeuble et le site surlequel je vais me connecter pour avoir internet (genre comme sur les hotspots de wifi dans les aéroports) ben il est entièrement en Chinois et je parle pas un mot de chinois...

    Merci encore pour votre aide

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

Discussions similaires

  1. Problème lors de l'envoi d'un mail avec access
    Par anthony0903 dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2014, 22h59
  2. Problème lors de l'envoi d'un mail
    Par adrian07 dans le forum Internet
    Réponses: 5
    Dernier message: 05/01/2009, 22h54
  3. Problèmes d'encodage lors de l'envoi d'un mail
    Par NeqO55 dans le forum Linux
    Réponses: 1
    Dernier message: 31/08/2007, 17h17
  4. Problème aléatoire lors de l'envoi d'un mail
    Par exclusif dans le forum VB.NET
    Réponses: 7
    Dernier message: 31/07/2007, 18h55
  5. Problème lors de l'envoi d'un mail
    Par ricki dans le forum ASP
    Réponses: 3
    Dernier message: 15/11/2006, 21h54

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