[JavaMail] Problème de pièce jointe
Bonjours à tout le monde, je suis un débutant en programmation, et actuellement je travaille
sur une application client lourd qui envoi des mails, mais je confronté à un problème :(.
Je m'explique pour l'envoi du mail je joint une pièce, pour le premier destinataire dans ma liste des destinataires tout ce passe bien,
mais pour les autres l'affichage n'est pas bons, voici ce qui s'affiche à la place de la pièce jointe
------=_Part_3_6267181.1416398587452
Content-Disposition: attachment; filename=s.sql
S'il vous plait aidez mois.
Voici ma fonction
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
| public static void pieceJoint(MimeBodyPart messageBodyPart, String Texte, Multipart multipart, ArrayList attachement_path, Message mimeMessage, String from, ArrayList<String> to) throws MessagingException {
mimeMessage.setFrom(new InternetAddress(from));
InternetAddress[] toAdress = new InternetAddress[to.size()];
for (int i = 0; i < to.size(); i++) {
toAdress[i] = new InternetAddress(to.get(i));
System.out.println(to.get(i));
}
mimeMessage.setRecipients(Message.RecipientType.TO, toAdress);
messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(Texte,"UTF-8");
multipart = new MimeMultipart("alternative");
multipart.addBodyPart(messageBodyPart);
for (int i = 0; i < attachement_path.size(); i++) {
messageBodyPart = new MimeBodyPart();
File file=new File((String) attachement_path.get(i));
javax.activation.FileDataSource source = new FileDataSource(file);
System.out.println(i + " " + attachement_path.get(i));
messageBodyPart.setDataHandler(new DataHandler(source));
// String name = (String) attachement_path.get(i);
messageBodyPart.setFileName(source.getName());
multipart.addBodyPart(messageBodyPart);
}
messageBodyPart.setText(Texte, "UTF-8");
mimeMessage.setContent(multipart);
}
} |
J'ai commenté l'instruction mais ça pas marché
Bon la méthode marchais et chaque destinataire recevais la pièce sans problème, mais c'est lorsque
j'ai voulu personnalisé le mail pour chaque destinataire, par exemple inséré dans le mail l'adresse du destinataire
(qui provient d'une base de donnée), que ces erreurs ont commencés.
Voici comment j'ai raisonné :
...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ArrayList<String> lsad=new ArrayList<>();
DestinataireController destControl = new DestinataireController();
Destinataire dest = new Destinataire();
for (int i = 0; i < listeDestinataire.size(); i++) {
lsad.add(listeDestinataire.get(i));
message.msg(Titre, mimeMessage, From, lsad);
for(int a=0;a<lsad.size();a++){
dest = destControl.recherchEmail(lsad.get(a));
txte = dest.getAddress() + "\n" + dest.getBp() + "\n" + dest.getTel() + "\n Bonjours " + dest.getTitre() + " " + dest.getNom() + "\n" + Texte;
message.pieceJoint(messageBodyPart, txte, multipart, attachement_path, mimeMessage, From, lsad);
Transport.send(host, From, password, mimeMessage, session);
}
} |
...