programme java pour envoyer des mails

programme java pour envoyer des mails - Java - Programmation

Marsh Posté le 07-08-2005 à 12:17:42    

Salut tout le monde,
 
J'essai d'exécuter un programme java qui permet en théorie d'envoyer des mails mais ça ne marche pas : à la compilation y a pas d'erreurs mais à l'exécution ça me met  : "Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/MessagingException"
 
Jai lu le topic de benou sur ce sujet mais j'ai pas réussi à trouver mon erreur, j'utilise l'éditeur de commande de XP pour compiler et exécuter les programmes. Voici le code source du programme que j'ai appelé : Envoi.java  
 
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
 
public class Envoi {
 
/** Destinataire du message. */
protected String message_dest = "adresse@tiscali.fr";
/* Objet du message. */
protected String message_objet = "Re: Essai ";
/** Destinataire du message en copie (CC). */
protected String message_cc = "adresse@tiscali.fr";
/** Texte du message. */
protected String message_corps =
"Bonjour dans une semaine vous recevrez de  " +
"plus amples détails sur " +
"le sujet de votre choix";
 
/** Objet session de JavaMail. */
protected Session session;
/** Objet message de JavaMail. */
protected Message mesg;
 
 
public void envoyerMail() {
 
// 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", "smtp.tiscali.fr" );
 
// Créer l’objet Session.
session = Session.getDefaultInstance(props, null);
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("adresse@tiscali.fr" ));
 
// Adresse TO.
InternetAddress toAddress = new InternetAddress(message_dest);
mesg.addRecipient(Message.RecipientType.TO, toAddress);
 
// Adresse CC.
InternetAddress ccAddress = new InternetAddress(message_cc);
mesg.addRecipient(Message.RecipientType.CC, ccAddress);
 
// 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();
}
}
}
/** Programme principal*/
public static void main(String[] av) {
Envoi env = new Envoi();
env.envoyerMail();
}
}

Reply

Marsh Posté le 07-08-2005 à 12:17:42   

Reply

Marsh Posté le 07-08-2005 à 12:35:38    

si t'as lu mon topic, tu sais ce que signifie cette exception : il ne trouve pas MessagingException à l'execution => le classpath que tu utilises à l'execution n'inclut surement pas le jar JavaMail (mail.jar ou mail-api.jar)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 12:42:37    

OK j'essaie de revérifier tout ça, le pbm c'est que si je ferme l'éditeur de commande je dois tout recommencer (path et classpath) y a pas une solution pour le faire définitivement

Reply

Marsh Posté le 07-08-2005 à 12:57:08    

Voici la commande pour le classpath sue j'ai fais :
C:\>SET CLASSPATH=%CLASSPATH%;C:\javamail-1.3.2\mail.jar;C:\jaf-1.1ea\activation.jar
 
Mais maintenant il me met ça :  
Exception in thread "main" java.lang.NoClassDefFoundError: Envoi
 
Je vais craquer!!!
 
 

Reply

Marsh Posté le 07-08-2005 à 13:16:21    

ça marche!!!!!!!!!!!
 
il manquait le classpath suivant : C:\javamail-1.3.3ea\mail.jar
 
Merci à Benou :-)

Reply

Marsh Posté le 07-08-2005 à 13:18:15    

si tu avais bien lu mon topic, tu aurais vu qu'il y avait une méthode pratique qui consistait à créer des fichier batch pour fixer le classpath ...
 
et tu aurais aussi vu que si tu ne mets pas le '.' dans le classpath, il n'ira pas chercher les classes dans le répertoire courant => il ne trouvera pas ta classe Envoi [:spamafote]
 
je sais que c'est pas évident au début, mais si tu fais bien gaffe et que tu procèdes par étapes, tu verras que tout marche correctement.
 
Et la première étape, c'est pas d'envoyer un mail, mais juste de faire un HelloWorld :)


Message édité par benou le 07-08-2005 à 13:20:03

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 13:19:19    

Skyline_GTR a écrit :

il manquait le classpath suivant : C:\javamail-1.3.3ea\mail.jar
Merci à Benou :-)


heu ... c'est surement pas ça qui a corrigé l'erreur du noclassdeffound sur ta classe Envoi, hein ;)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 13:21:01    

salut
ben il est où ton constructeur?
 
tu l'appelle dans le main, mais il n'est pas déclaré ...

Reply

Marsh Posté le 07-08-2005 à 13:21:26    

ok c'est bon j'aui fais un fichier .bat pour les classpath
 
Je ne suis pas un débutant :-) mais disons que ça fais très longtemps que je n'avais plus fais de java

Reply

Marsh Posté le 07-08-2005 à 13:22:46    

tu peux être plus clair fann_tomasss

Reply

Marsh Posté le 07-08-2005 à 13:22:46   

Reply

Marsh Posté le 07-08-2005 à 13:23:24    

fan_tomassss a écrit :

salut
ben il est où ton constructeur?
tu l'appelle dans le main, mais il n'est pas déclaré ...


Constructeur par défaut :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 13:25:20    

au temps pour moi ça fait un p'tit temps que j'ai pas programmé.

Reply

Marsh Posté le 07-08-2005 à 13:26:08    

Je ne suis pas l'auteur de ce programme (je ne serais jamais capable de faire ça!!)
 
Voici la source :
 
http://www.supinfo-projects.com/fr/2005/java%5Fmail/2/

Reply

Marsh Posté le 07-08-2005 à 13:29:36    

Skyline_GTR a écrit :

(je ne serais jamais capable de faire ça!!)


tu vois bien que t'es débutant ;)
(c'est pas une tare)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 13:37:09    

un dernier petit point dans le fichier .bat j'ai mis ça :
 
SET CLASSPATH=.
SET CLASSPATH=%CLASSPATH%;C:\jaf-1.1ea\activation.jar
SET CLASSPATH=%CLASSPATH%;C:\javamail-1.3.2\mail.jar
SET CLASSPATH=%CLASSPATH%;C:\javamail-1.3.3ea\mail.ja
 
Est ce que en rajoutanr la ligne suivante :
path = C:\Sun\AppServer\jdk\bin
 
je dois mettre aussi le point :
path = .
 

Reply

Marsh Posté le 07-08-2005 à 13:42:10    

si tu poses cette question, c'est que tu n'as pas compris ce qu'était le classpath. je t'invite à relire mon topic.
 
on en rediscute après si tu n'as toujours pas compris.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 13:44:08    

OK Professeur Benou !

Reply

Marsh Posté le 07-08-2005 à 13:51:40    

C'est bon si j'ai bien compris, il faut faire ça :
 
SET CLASSPATH=.
SET CLASSPATH=%CLASSPATH%;C:\jaf-1.1ea\activation.jar
SET CLASSPATH=%CLASSPATH%;C:\javamail-1.3.2\mail.jar
SET CLASSPATH=%CLASSPATH%;C:\javamail-1.3.3ea\mail.jar  
SET CLASSPATH=%CLASSPATH%;C:\Sun\AppServer\jdk\bin


Message édité par Skyline_GTR le 07-08-2005 à 13:52:40
Reply

Marsh Posté le 07-08-2005 à 13:58:59    

Skyline_GTR a écrit :


SET CLASSPATH=%CLASSPATH%;C:\Sun\AppServer\jdk\bin


mais nan /o\
 
pourquoi est ce que tu veux mettre C:\Sun\AppServer\jdk\bin dans ton classpath ? y a pas de classes dans ce répertoire !
 
Tu confond classpath (chemins où java va aller chercher les fichiers .class) et path (chemins où l'OS va aller chercher les fichiers executables)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-08-2005 à 14:02:20    

ok effectivement ça marche plus!
 
je dois juste rajouter path = C:\Sun\AppServer\jdk\bin


Message édité par Skyline_GTR le 07-08-2005 à 14:04:46
Reply

Marsh Posté le 07-08-2005 à 16:39:23    

[:kiki]
 
Pauvre benou.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed