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

Développement Web en Java Discussion :

Problème de chemin pour une pièce jointe


Sujet :

Développement Web en Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2002
    Messages : 55
    Points : 37
    Points
    37
    Par défaut 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 : 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.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Les chemins des répertoires sont précédés de "/". Cela signifie que le répertoire "f" est à la racine du disque. Est-ce bien le cas ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2002
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    Bonjour et merci de ta réponse.

    En fait non. le répertoire f est dans le répertoire de mes classes. Ce qui m'étonne à vrai dire c'est que ça marche pour le template mais pas pour la pièce jointe. Pour information j'ai aussi tenté ces chemins là qui ne marchent pas plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    f/e/r/simu/template/pieceJointe.pdf
    /f/e/r/simu/template/pieceJointe.pdf
    ../../template/pieceJointe.pdf

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Le template, il est dans le jar ?
    Il faudrait voir la méthode "template" pour savoir comment elle se débrouille pour trouver la page HTML.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2002
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    C'est pour ça que j'avais mis le code de ma classe MailUtils, c'est dedans qu'il y a ma méthode template.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(path)));

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ah ! Voila le problème : ton template est dans le jar. Il faut le chemin complet des packages pour y accéder. Par contre, ta pièce jointe est sur le disque dur. Il faut donc un chemin complet à partir du disque dur. Si tu es sous windows, le chemin ressemblera à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\\toto\\titi\\tata\\pieceJointe.pdf

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/03/2013, 01h43
  2. [PHPMailer] Problème d'envoi d'une pièce jointe
    Par yumechan dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/07/2012, 11h54
  3. Content-type pour une pièce jointe dans un mail
    Par rcjcrcjc dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2009, 18h51

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