Mithilfe der Apache Commons -E -Mail eine Datei an eine HTML -E -Mail anhängen
-
05-07-2019 - |
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();
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
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");