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] Problème configuration / classpath ?


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut [JavaMail] Problème configuration / classpath ?
    Bonjour,

    J'essaie depuis ce matin de faire un envoi de mail simple via une méthode java, sans succès pour le moment. J'aimerai donc avoir des avis sur ce qui n'irait pas.

    Le code de ma fonction java est le suivant (certainement le même que beaucoup) :
    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
     
    try{
    			String protocol = "smtp";
    			String server = "127.0.0.1";
    			String message = "corps du message";
    			String title = "Email test";
    			String from = "name@bidule.com";
    			String to = "name@bidule.com";
     
    			Properties myProperties = new Properties();
    			myProperties.put("mail." + protocol + ".host",server);
     
    			Session mySession = Session.getDefaultInstance(myProperties,null);
    			mySession.setDebug(true);
     
    			Message myMessage = new MimeMessage(mySession);
    			myMessage.setFrom(new InternetAddress(from));
     
    			InternetAddress[] myAddress = new InternetAddress[1];
    			myAddress[0] = new InternetAddress(to);
    			myMessage.setRecipients(Message.RecipientType.TO, myAddress);
    			myMessage.setSubject(title);
    			myMessage.setText(message);
    			myMessage.setSentDate(new Date());
    			myMessage.saveChanges();
    			//Transport.send(myMessage);
     
    			Transport transport = mySession.getTransport("smtp");
    			transport.connect();
    			transport.sendMessage(myMessage,myMessage.getRecipients(Message.RecipientType.TO));
     
    			/*
    			SMTPTransport transport =
    					(SMTPTransport)mySession.getTransport(server);
     
    			transport.connect();
     
    			transport.sendMessage(myMessage, myMessage.getAllRecipients());
    			transport.close();
    			*/
    			done = true;
    		}catch( AddressException e ){
    			System.err.println("Address exception : "+e.getMessage());
    			e.printStackTrace();
     
    		}catch( MessagingException e ){
    			System.err.println("Messaging exception : "+e.getMessage());
    			e.printStackTrace();	
    		}
    Service SMTP : Etant sur un réseau d'entreprise et donc ne pouvant dialoguer directement avec des serveurs smtp externe, j'ai installer les utilitaires window pour avoir
    un SMTP local à ma machine.

    Classpath : Pour ce qui est du classpath, j'ai inclus 'activation.jar', 'mail.jar', 'smtp.jar' et mailapi.jar', les deux derniers venant de la version javamail 1.4.2.

    Erreur : Lors de l'exécution, j'obtiens le message suivant :
    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
     
     
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    	at javax.mail.Session.getService(Session.java:607)
    	at javax.mail.Session.getTransport(Session.java:541)
    	at javax.mail.Session.getTransport(Session.java:484)
    	at javax.mail.Session.getTransport(Session.java:464)
    	at org.epo.bli.scenario.util.Email.sendEmailSMTP(Email.java:56)
    	at org.epo.bli.scenario.util.Email.main(Email.java:143)
    Caused by: java.lang.NoSuchMethodError: javax.mail.Session.getDebugOut()Ljava/io/PrintStream;
    	at com.sun.mail.smtp.SMTPTransport.<init>(Unknown Source)
    	at com.sun.mail.smtp.SMTPTransport.<init>(Unknown Source)
    	... 10 more
    Messaging exception : smtp
    javax.mail.NoSuchProviderException: smtp
    	at javax.mail.Session.getService(Session.java:611)
    	at javax.mail.Session.getTransport(Session.java:541)
    	at javax.mail.Session.getTransport(Session.java:484)
    	at javax.mail.Session.getTransport(Session.java:464)
    	at org.epo.bli.scenario.util.Email.sendEmailSMTP(Email.java:56)
    	at org.epo.bli.scenario.util.Email.main(Email.java:143)
    Ce message d'erreur pointant sur la ligne d'envoi du message (transport.send(..))


    J'ai eu beau tenter de mettre à jour mes librairies jar, virer certaines (toutes les configurations ont été faite), rien n'y fait, j'ai toujours la même erreur.

    Est-ce que quelqun pourrait m'aider sur ce sujet s'il vous plait ?

    Cordialement.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est quoi ce mailapi.jar? On dirait la partie interface de la javamail. Comm tu nous dit que t'as javamail 1.4.2 et que la méthode getDebugOut mentionnée dans ton erreur apparait à partir de javamail 1.3, je suppose que ce mailapi est d'une version de javamail <3.

  3. #3
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Le 'mailapi.jar' était dans le répertoire lib de la version 1.4.2 de javamail que j'ai download ce matin même.


    Depuis j'ai supprimer ce jar, sur beaucoup de forum j'ai vu qu'il était inutile, plus ou moins.

    J'ai tenté d'inclure dans le classpath la lib 'mail.jar' de javamail 1.4.2 au lieu de la mail.jar issue de mon jdk, mais j'obtiens une erreur de classe non trouvée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    java.lang.NoClassDefFoundError: com/sun/mail/util/SharedByteArrayInputStream
    	at org.epo.bli.scenario.util.Email.sendEmailSMTP(Email.java:44)
    	at org.epo.bli.scenario.util.Email.main(Email.java:143)
    Exception in thread "main"
    Donc pour le moment je m'en tiens à inclure uniquement 'activation.jar' et 'mail.jar' issues toutes deux de mon jdk 1.5.

    J'ai donc toujours l'erreur de mon premier post.

  4. #4
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Ok j'ai résolu mon problème.

    Le souci était relativement simple mais je n'y ai plus pensé.

    Le JDK 1.4 que j'utilise pour compiler / faire tourner les sources était loader avant les jars de l'application.
    J'ai donc inverser les priorités de load, en chargant en premier activation.jar puis mail.jar, et seulement ensuite le JDK, et ça passe nickel.


    Merci de t'être penché sur la question

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    inclure javamail et activation issue de jdk 1.5? De quoi tu parle là? Javamail ne viens pas avec la jvm de base. Il y a seulement le JAF qui est apparu depuis java6 dans la base. T'as toujours besoin de récupérer javamail sur le site de sun.

    Dans le zip de sun t'as juste besoin de récupérer le fichier mail.jar, comme mentionné dans le readme.

  6. #6
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    JDK 1.6 pardon.

    J'ai juste fini par inclure le 'activation.jar' et le 'mail.jar' du JDK 1.6 à mon classpath (en temps que librairies externes), avec une priorité de load par rapport au jdk (1.4) lui-même.

  7. #7
    Invité de passage
    Inscrit en
    Octobre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 1
    Par défaut exactement le même problème, merci Kij !
    tout est dans le titre !

    je dois dire que franchement pour ce problème, quand on bosse sur un 'gros existant' avec plein de packages partagés par plein d'applis et des libs partout partout, sans ce forum j'aurais mis un sacré moment à trouver la source.
    thanks again.

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

Discussions similaires

  1. Problème de classpath et de fichier de configuration Spring
    Par rozwel dans le forum Wildfly/JBoss
    Réponses: 13
    Dernier message: 29/12/2007, 17h32
  2. Problème configuration variable CLASSPATH
    Par inzagi dans le forum Langage
    Réponses: 10
    Dernier message: 18/10/2007, 20h04
  3. [ jar ] Problème de ClassPath
    Par remyli dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 11/07/2005, 14h07
  4. [ant]Problème de classpath
    Par le Daoud dans le forum Eclipse Java
    Réponses: 36
    Dernier message: 05/07/2005, 08h34
  5. [ Eclipse ][classpath] Problème de classpath
    Par pista dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/04/2004, 22h18

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