Problème de chemin pour une pièce jointe
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:
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:
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:
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.