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
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
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 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 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... ... } }
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.
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); ... } }
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.
Partager