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.
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.
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
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 :
et ainsi tu auras l'image directement dans le mail
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);
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);Est ce que quelqu'un aurait un exemple pour le DataSource?DataSource source = new FileDataSource("prin t.gif"); ==> Icompatible types
messageBodyPart.setD ataHandler(new DataHandler(source)) ; ==> Cannot find symbolConstructor DataHandler(javax.sq l.DataSource));
Merci
J'ai remplacé DataSource par FileDataSource et c'est OK ça fonctionne.
Par contre il m'envoie deux fois la pièce jointe!
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...
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.
Partager