9
votes

Comment joindre un fichier à un e-mail HTML à l'aide du courrier électronique Apache Commons

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? xxx


3 commentaires

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.


6 Réponses :


3
votes

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

Common- Email 1.2 RC2


0 commentaires

13
votes
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)

0 commentaires

4
votes

Notez que l'utilisation: xxx

sur un htmlemail à 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 .

commutation sur un multipartamail corrigé ceci.


0 commentaires

0
votes

J'utilise la méthode HTMLemail # incorporée (URL, String):

File pdf = new File(pdfPath);
email.embed(pdf.toURI().toURL(), pdf.getName)


0 commentaires

0
votes

sur la dernière version (1.5) Le code suivant a fonctionné pour moi xxx


0 commentaires

0
votes

Vous pouvez utiliser le moulage à la hausse et la coulée descendante en Java.

  1. htmlemail étend le multipartage et la méthode Attacch renvoie le CLASSE MULTIMARTEMAIL. LI>
  2. htmlemail sera converti en multipartime, puis utilisez tempemail.attach (pièce jointe). Li>
  3. 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;
    


0 commentaires