J'utilise e-mail Apache Commons 1.1 et je ne peux pas comprendre comment pour joindre un fichier à un htmlemail. Si j'exécute le code ci-dessous, j'obtiens un email avec une pièce jointe, mais le message HTML apparaît également comme une pièce jointe.
Si je n'appelle pas de courrier électronique.attach () Le message HTML vient à ce que vous attendiez, Mais j'ai besoin que le message HTML passe et la pièce jointe. Qu'est-ce que je manque? P>
6 Réponses :
Je vous suggère d'essayer le candidat actuel de la version V1.2 RC2 comme 1.1 (Je suppose que vous utilisez cela) a quelques problèmes de mise en page HTML P>
email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
"document.pdf", "Document description",
EmailAttachment.ATTACHMENT);
this works with commons-email 1.1.pdfBytes should be a byte[] containing the bytes of the pdf document. If that doesn't suit you, you can try other DataSource implementations, but I can't guarantee they'd work (although they should). (The one above is org.apache.commons.mail.ByteArrayDataSource)
Notez que l'utilisation: sur un commutation sur un htmlemail code> à l'aide des communes-e-mail 1.1 provoque le courrier électronique obtenu pour avoir son message (texte ou html) joint en pièce jointe . p> multipartamail code> corrigé ceci. p> p>
J'utilise la méthode HTMLemail # incorporée (URL, String):
File pdf = new File(pdfPath); email.embed(pdf.toURI().toURL(), pdf.getName)
sur la dernière version (1.5) Le code suivant a fonctionné pour moi
Vous pouvez utiliser le moulage à la hausse et la coulée descendante en Java.
puis multipartimail sera reconverti en classe HTMLEMAIL. P>
HtmlEmail email; MultiPartEmail tempEmail; // HtmlEmail -> MultiPartEmail tempEmail = new HtmlEmail(); // Add a attachment EmailAttachment attachment = new EmailAttachment(); attachment.setURL(new URL(fileURL)); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setName(MimeUtility.encodeText(fileName)); tempEmail = tempEmail.attach(attachment); // MultiPartEmail -> HtmlEmail email = (HtmlEmail)tempEmail;
Oh .. Au fait, j'utilisais Gmail comme client de test.
Avez-vous essayé de forcer le type de contenu en effectuant un courriel.setContent (javax.mail.internet.mimemultiparpart amimemultipart)? C'est probablement redondant mais vaut la peine d'être coupé
@ Drooidin-net Je ne suis pas sûr de comprendre ce que vous voulez dire. Je pense que tout le point d'e-mail Apache Commons était de vous abstraire des trucs Mimemultipart.