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] se connecter sur un serveur Exchange


Sujet :

API standards et tierces Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [JavaMail] se connecter sur un serveur Exchange
    Bonjour,

    J'ai besoin d'envoie des mail via une application Java grace au serveur EXHANGE de Microsoft et l'API JavaMail Pour cella j'ai rédiger deux classe. Le serveur EXCHANGE me refuse toujours l'envoie de mail vers toutes les adresses. Pourtant en passant par Outlook aucun problème.

    Voici mon code

    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
    64
    65
    66
    67
    package classes;
     
    import java.util.Properties;
     
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
    public class SendMail {
     
     
    	public static void sendMail(String message_dest,String message_objet,String message_corps){
     
     
    		/** Objet session de JavaMail. */
    		Session session;
    		/** Objet message de JavaMail. */
    		Message mesg;
     
    		//		 Nous devons passer les informations au serveur de messagerie sous
    		//		 forme de propriétés car JavaMail en comporte beaucoup...
    		Properties props = new Properties();
     
    		//		 Votre réseau doit donner au serveur SMTP local le nom "nom_du_serveur_smtp"
     
    		props.put("mail.smtp.host", "Nom du serveur SMTP");
     
    		//		 Créer l’objet Session.
    		Authenticator auth = new MyAuthentificator();//USERSMTP et PASSWDSMTP
    		session = Session.getDefaultInstance(props, auth);
    		session.setDebug(true); //activer le mode verbeux !
     
    		try {
    			//		 Créer un message.
    			mesg = new MimeMessage(session);
     
    			//		 Adresse From - Indiquer la provenance du message
    			mesg.setFrom(new InternetAddress("toto@domain.com"));
     
    			//		 Adresse TO.
    			InternetAddress toAddress = new InternetAddress(message_dest);
    			mesg.addRecipient(Message.RecipientType.TO, toAddress);
     
    			//		 Objet.
    			mesg.setSubject(message_objet);
     
    			//		 Corps du message.
    			mesg.setText(message_corps);
     
    			//		 Enfin, envoyer le message !
    			Transport.send(mesg);
     
    		} catch (MessagingException ex) {
    			while ((ex = (MessagingException)ex.getNextException()) != null) {
    				ex.printStackTrace();
    			}
    		}
    	}
     
    	public static void main(String[] args){
    		sendMail("toto@aol.com", "bonjour","bonjour");
    	}
    }
    classe MyAuthentificator
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class MyAuthentificator extends Authenticator {
     
    	public PasswordAuthentication getAuthentification(){
    		String login = "login";
    		String mdp = "pass";
     
    		return new PasswordAuthentication(login, mdp);
    	}
    }
    Voici ce que me donne l'excecution
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    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 "serveur smtp exchange", port 25, isSSL false
    220 serveur smtp exchange Microsoft ESMTP MAIL Service, Version: 6.0.3790.211 ready at  Mon, 2 Jul 2007 15:29:27 +0200 
    DEBUG SMTP: connected to host "serveur smtp exchange", port: 25
     
    EHLO J67053
    250-serveur smtp exchange Hello [XXX.XXX.XXX.XXX]
    250-TURN
    250-SIZE
    250-ETRN
    250-PIPELINING
    250-DSN
    250-ENHANCEDSTATUSCODES
    250-8bitmime
    250-BINARYMIME
    250-CHUNKING
    250-VRFY
    250-X-EXPS GSSAPI NTLM LOGIN
    250-X-EXPS=LOGIN
    250-AUTH GSSAPI NTLM LOGIN
    250-AUTH=LOGIN
    250-X-LINK2STATE
    250-XEXCH50
    250 OK
    DEBUG SMTP: Found extension "TURN", arg ""
    DEBUG SMTP: Found extension "SIZE", arg ""
    DEBUG SMTP: Found extension "ETRN", arg ""
    DEBUG SMTP: Found extension "PIPELINING", arg ""
    DEBUG SMTP: Found extension "DSN", arg ""
    DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
    DEBUG SMTP: Found extension "8bitmime", arg ""
    DEBUG SMTP: Found extension "BINARYMIME", arg ""
    DEBUG SMTP: Found extension "CHUNKING", arg ""
    DEBUG SMTP: Found extension "VRFY", arg ""
    DEBUG SMTP: Found extension "X-EXPS", arg "GSSAPI NTLM LOGIN"
    DEBUG SMTP: Found extension "X-EXPS=LOGIN", arg ""
    DEBUG SMTP: Found extension "AUTH", arg "GSSAPI NTLM LOGIN"
    DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""
    DEBUG SMTP: Found extension "X-LINK2STATE", arg ""
    DEBUG SMTP: Found extension "XEXCH50", arg ""
    DEBUG SMTP: Found extension "OK", arg ""
    DEBUG SMTP: use8bit false
    MAIL FROM:<toto@domain.com>
    250 2.1.0 toto@domain.com....Sender OK
    RCPT TO:<toto@domain.com>
    550 5.7.1 Unable to relay for toto@domain.com
    DEBUG SMTP: Invalid Addresses
    DEBUG SMTP:   toto@domain.com
    DEBUG SMTP: Sending failed because of invalid destination addresses
    RSET
    250 2.0.0 Resetting
    javax.mail.SendFailedException: Invalid Addresses;
      nested exception is:
    	com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay for toto@domain.com
     
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
    	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
    	at javax.mail.Transport.send0(Transport.java:169)
    	at javax.mail.Transport.send(Transport.java:98)
    	at classes.SendMail.sendMail(SendMail.java:55)
    	at classes.SendMail.main(SendMail.java:65)
    Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay for toto@domain.com
     
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
    	... 5 more
    QUIT
    221 2.0.0 dfrjeummx01.ddom.ad.corp Service closing transmission channel
    com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay for toto@domain.com
     
    	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
    	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
    	at javax.mail.Transport.send0(Transport.java:169)
    	at javax.mail.Transport.send(Transport.java:98)
    	at classes.SendMail.sendMail(SendMail.java:55)
    	at classes.SendMail.main(SendMail.java:65)
    Pour information toto@domain.com est une adresse mail qui fonctionne sur le serveur avec Outlook

    Merci pour toute aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Tu es sûr que dans Outlook c'est bien ce serveur qui est utilisé quand tu écris à toto@domain.com ? (attention, tu peux très bien avoir un serveur exchange et un serveur smtp autre)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Oui je pense, car quand je suis amené à configurer un compte sur le poste client j'indique serveur exchange puis l'adresse du serveur et le mon du compte de messagerie.

    Comment est'il possible de savoir si le serveur SMTP est différent du fait que je peut accéder à la configuration du serveur ? (Utilisation de Wireshark ?) ...

    Je me rend compte aussi que dans le debug il ne s'identifie pas avent l'envoie du mail. J'ai essayer de me connecter sur le serveur avec telnet mais pas moyen de s'identifier. Il me dit authentification unreconize ou quel que chose du même style.

    Comment dire à l'API d'utiliser l'identification car le debug dit bien :
    DEBUG SMTP: useEhlo true, useAuth false

  4. #4
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 41
    Points : 43
    Points
    43
    Par défaut
    J'ai eu le même problème.

    J'ai recherché sur le net et j'ai trouvé que dans ton code il manquait ça :

    props.setProperty("mail.smtp.auth", "true"); //Indicate that authentication is required at smtp server

    Et ça passe chez moi, j'ai bien :

    DEBUG SMTP: useEhlo true, useAuth true

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2007, 14h33
  2. Réponses: 1
    Dernier message: 12/07/2007, 16h39
  3. telnetlib probleme de connection sur un serveur Win NT
    Par olliebackflip dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 21/06/2007, 23h42
  4. problème de connection sur un serveur
    Par chti_juanito dans le forum Outils
    Réponses: 1
    Dernier message: 12/01/2006, 21h35
  5. Réponses: 5
    Dernier message: 03/10/2005, 13h02

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