Frage

Ich benutze Apache Commons E -Mail 1.1 Und ich kann nicht herausfinden, wie ich eine Datei an eine HTMLemail anhängen kann. Wenn ich den folgenden Code ausführe, erhalte ich eine E -Mail mit einem Anhang, aber die HTML -Nachricht wirkt auch als Anhang.

Wenn ich keine E -Mail anrufe. Was vermisse ich?

  HtmlEmail email = new HtmlEmail();
  email.setHostName("localhost");
  email.addTo("test@mail.com", "Test");
  email.setFrom("testapp@mail.com", "Test App");
  email.setSubject("Test message");
  email.setHtmlMsg("<div style='font-size: 20px; color: green;'>This is html email</div>");

  EmailAttachment attachment = new EmailAttachment();
  attachment.setPath(pdfPath);
  attachment.setDisposition(EmailAttachment.ATTACHMENT);
  email.attach(attachment);

  email.send();
War es hilfreich?

Lösung

email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
      "document.pdf", "Document description",
       EmailAttachment.ATTACHMENT);

Dies funktioniert mit Commons-Email 1.1.

pdfBytes sollte a sein byte[] enthält die Bytes des PDF -Dokuments. Wenn das nicht zu Ihnen passt, können Sie andere versuchen DataSource Implementierungen, aber ich kann nicht garantieren, dass sie funktionieren würden (obwohl sie es sollten).

(Der oben ist ist org.apache.commons.mail.ByteArrayDataSource)

Andere Tipps

Beachten Sie das mit:

email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
      "document.pdf", "Document description",
       EmailAttachment.ATTACHMENT);

auf einen HtmlEmail Durch die Verwendung von Commons-Email 1.1 wird die resultierende E-Mail (Text oder HTML) als Anhang eingeschlossen.

Wechseln auf a MultiPartEmail behoben.

Ich schlage vor, Sie probieren den aktuellen Release -Kandidaten V1.2 RC2 als 1.1 (ich denke, Sie verwenden das) einige HTML -Layoutprobleme auf

COMMONS-EMail 1.2 RC2

Ich verwende die Methode Htmlemail#Einbettung (URL, String):

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

Bei der letzten Veröffentlichung (1.5) funktionierte der folgende Code für mich

 email.attach(new FileDataSource(attachmentFileObject), "AttachmentName", "Description");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top