Bonjour,

Je dois envoyer un mail avec une pièce jointe et je n'arrive pas à régler un problème de chemin, voici la structure de mes classes :

La classe gérant entre autres l'envoi du mail

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
package f.e.r.simu.sm.impl;
 
import f.e.r.comm.utils.MailUtils;
import f.e.r.comm.utils.ToolUtils;
 
public class SimuSmImpl extends GeneriqueSmImpl implements SimuSm {
 
	public Retour simulM(Aller aller) throws Exception {
	...
	// Création du corps du mail avec un système de template
	ToolUtils tu = new ToolUtils();
	String corps = tu.template("/f/e/r/simu/template/simuTemplate.html");
	...
	// Création du mail et attachement de la pièce jointe
	MailUtils mu = new MailUtils();
	mu.setCorps = corps;
	mu.ajouterPieceJointe("/f/e/r/simu/template/pieceJointe.pdf");
	mu.sendMail();
 
	}
}
Classe gérant le template du mail et le remplacement des champs paramétrables

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
package f.e.r.comm.utils;
 
public class ToolUtils {
 
	public String template(String path) {
	...
	// Récupération du template
	BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(path)));
 
	//Traitement sur br...
 
	...
	}
 
}
Classe utilitaire de mails.

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
package f.e.r.comm.utils;
 
public class MailUtils {
 
	private Vector piecesJointes = new Vector();
 
	public void ajouterPieceJointe(String string) {
		piecesJointes.add(string);
	}
 
	// en s'appuyant sur l'exemple donné par J.M.DOUDOUX :
	// http://jmdoudoux.developpez.com/cours/developpons/java/chap-javamail.php
	public void envoyerMail() {
	...
		// Alimentation des zones du mail
	...
		// Création du contenu du message : Ajout des pièces jointes
		bodyPart = new MimeBodyPart();
 
		// Pour chacun des éléments de la liste de pièces jointes on ajoute le fichier
		Iterator iterator = piecesJointes.iterator();
		while (iterator.hasNext()) {
			String chemin = (String) iterator.next();
			DataSource source = new FileDataSource(chemin);
			bodyPart.setDataHandler(new DataHandler(source));
			bodyPart.setFileName(chemin);
		}
 
		// On ajoute les pièces jointes au multipart
		multipart.addBodyPart(bodyPart);
 
		// On affecte le multipart au contenu du message
		message.setContent(multipart);
 
		javax.mail.Transport.send(message);
 
	...
	}
 
}
J'ai placé mes fichiers HTML et PDF dans le package f.e.r.simu.template et j'ai vérifié la présente physique des fichiers dans le répertoire correspondant.
Il faut savoir que la gestion du template marche bien.

Je suis sûr que c'est la gestion des pièces jointes qui déconne puisque quand je mets en commentaire cette partie je reçois bien le mail. De même, quand pour la pièce jointe je mets le chemin absolu du fichier sur ma machine je reçois bien le mail avec la PJ.

Si quelqu'un avait une idée sur ce phénomène ça serait bienvenu.

Merci de votre aide.