首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Apache Commons电子邮件将文件附加到HTML电子邮件

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

Stack Overflow用户
提问于 2009-10-23 06:16:56
回答 5查看 15.9K关注 0票数 9

我正在使用Apache Commons Email 1.1,但我不知道如何将文件附加到HtmlEmail。如果我运行下面的代码,我会收到一封带有附件的电子邮件,但HTML消息也会作为附件出现。

如果我不调用email.attach(),超文本标记语言消息就会像你所期望的那样通过,但是我需要超文本标记语言消息和附件。我遗漏了什么?

代码语言:javascript
复制
  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();
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-21 06:06:12

代码语言:javascript
复制
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)

票数 13
EN

Stack Overflow用户

发布于 2011-02-08 16:53:33

请注意,使用:

代码语言:javascript
复制
email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
      "document.pdf", "Document description",
       EmailAttachment.ATTACHMENT);

HtmlEmail上,使用commons-email1.1会导致生成的电子邮件将其消息(文本或html)封装为附件。

切换到MultiPartEmail修复了此问题。

票数 4
EN

Stack Overflow用户

发布于 2009-10-23 07:43:06

我建议您尝试当前发布的候选版本v1.2html,因为1.1 (我猜您会使用它)存在一些RC2布局问题

commons-email 1.2 RC2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1610301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档