我正在使用Apache Commons Email 1.1,但我不知道如何将文件附加到HtmlEmail。如果我运行下面的代码,我会收到一封带有附件的电子邮件,但HTML消息也会作为附件出现。
如果我不调用email.attach(),超文本标记语言消息就会像你所期望的那样通过,但是我需要超文本标记语言消息和附件。我遗漏了什么?
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();
发布于 2010-01-21 06:06:12
email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
"document.pdf", "Document description",
EmailAttachment.ATTACHMENT);
这适用于commons-email 1.1。
pdfBytes
应该是包含pdf文档字节的byte[]
。如果这不适合您,您可以尝试其他DataSource
实现,但我不能保证它们会工作(尽管它们应该能工作)。
(上图是org.apache.commons.mail.ByteArrayDataSource
)
发布于 2011-02-08 16:53:33
请注意,使用:
email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
"document.pdf", "Document description",
EmailAttachment.ATTACHMENT);
在HtmlEmail
上,使用commons-email1.1会导致生成的电子邮件将其消息(文本或html)封装为附件。
切换到MultiPartEmail
修复了此问题。
发布于 2009-10-23 07:43:06
我建议您尝试当前发布的候选版本v1.2html,因为1.1 (我猜您会使用它)存在一些RC2布局问题
https://stackoverflow.com/questions/1610301
复制相似问题