如何使用Apache Commons Email将文件附加到HTML电子邮件

del*_*247 8 java email apache-commons-email

我正在使用Apache Commons Email 1.1,我无法弄清楚如何将文件附加到HtmlEmail.如果我运行下面的代码,我会收到一封带附件的电子邮件,但HTML邮件也会作为附件出现.

如果我不调用email.attach(),HTML消息就会如您所愿,但我需要HTML消息和附件.我错过了什么?

  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();
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 13

email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
      "document.pdf", "Document description",
       EmailAttachment.ATTACHMENT);
Run Code Online (Sandbox Code Playgroud)

这适用于commons-email 1.1.

pdfBytes应该是byte[]包含pdf文档的字节.如果这不适合你,你可以尝试其他DataSource实现,但我不能保证他们的工作(尽管他们应该).

(以上是org.apache.commons.mail.ByteArrayDataSource)