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

API standards et tierces Java Discussion :

[JavaMail] Envoi de pièce jointe


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut [JavaMail] Envoi de pièce jointe
    Bonjour,

    J'aurais aimé savoir s'il est possible avec JavaMail d'envoyer des pièces jointes ?

    Je suis débutant avec Java Mail

    Merci d'avance pour votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Oui c'est possible, il faut que tu crées un datasource représentant ton fichier et que tu l'attaches en pièce jointe.

    Cela donne un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MimeMessage mail = new MimeMessage(session);
    Multipart multipart = new MimeMultipart();
    MimeBodyPart messageBodyPart = new MimeBodyPart();
    DataSource source = //... Là il faut créer ta propre classe qui implémente javax.activation.DataSource
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName("nom de la PJ");
    multipart.addBodyPart(messageBodyPart);
    mail.setContent(multipart);
     
    // ... puis envoi du mail

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Je sais pas si c'est ca que tu voulais, mais tu parle d'image et avec javamail, tu peut aussi directement afficher les images dans le mail.

    Pour cela il faut mettre : <img src="cid:image0"> dans ton mail à l'endroit ou tu vas mettre l'image et ensuite joindre l'image de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    messageBodyPart = new MimeBodyPart();
    
    DataSource fds = new FileDataSource(cheminVersLImage);
    messageBodyPart.setDataHandler(new DataHandler(fds));
    
    messageBodyPart.setHeader("Content-ID","<image0>");
    
    multiPart.addBodyPart(messageBodyPart);
    et ainsi tu auras l'image directement dans le mail

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Ca fonctionne sans l'authentification
    Par contre pour l'envoi de pièce jointe j'ai ajouté :
    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
    // Première partie du message
     BodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setText("le voici");
     
    //Ajout de la première partie du message dans un objet Multipart
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPar  t(messageBodyPart);
     
    // Partie de la pièce jointe
    messageBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource("prin  t.gif");
    messageBodyPart.setD  ataHandler(new DataHandler(source))  ;
    messageBodyPart.setF  ileName("print.gif")  ;
     
    //Ajout de la partie pièce jointe
    multipart.addBodyPar  t(messageBodyPart);
     
    message.setContent(m  ultipart);
    session.setDebug(deb  ug);
    Transport.send(messa  ge);
    DataSource source = new FileDataSource("prin t.gif"); ==> Icompatible types

    messageBodyPart.setD ataHandler(new DataHandler(source)) ; ==> Cannot find symbolConstructor DataHandler(javax.sq l.DataSource));
    Est ce que quelqu'un aurait un exemple pour le DataSource?
    Merci

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    J'ai remplacé DataSource par FileDataSource et c'est OK ça fonctionne.

    Par contre il m'envoie deux fois la pièce jointe!

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    C'est bizarre, j'emploie presque le même code que toi pour faire ca, et jamais ça ne m'envoie plusieurs fois la meme pièce jointe...

    Tu n'emploies que ce code là, ou tu as encore un bout de code de plus pour envoyer le message ? Si tu as plus de code montre le tout, car ce bout là m'a l'air juste...

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Solution double fichiers joints
    Bonjour,

    Si vous avez deux fois la pièce jointe qui est envoyée, c'est parce qu'il y a
    deux fois :
    multipart.addBodyPar t(messageBodyPart);

    - la première:
    //Ajout de la première partie du message dans un objet Multipart
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPar t(messageBodyPart);

    - la seconde:
    //Ajout de la partie pièce jointe
    multipart.addBodyPar t(messageBodyPart);

    J'ai retesté en enlevant l'un des deux et il n'y a plus qu'une seule pièce jointe.
    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Javamail] Envoi de pièce jointe
    Par Rhino Onizuka dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 22/01/2014, 14h01
  2. envoi fichier pièce jointe avec Jmail
    Par nickg dans le forum ASP
    Réponses: 2
    Dernier message: 04/07/2006, 09h38
  3. Réponses: 7
    Dernier message: 30/06/2006, 17h12
  4. [axis - SOAP] Envoi de pièces jointes
    Par getupa dans le forum Services Web
    Réponses: 1
    Dernier message: 17/01/2006, 12h04
  5. problème avec l'envoi de pièces jointes
    Par mouna201 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 11/01/2006, 13h20

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