作为电子邮件附件发送的PDF文件损坏(java)

时间:2017-06-28 19:50:30

标签: java email pdf email-attachments

我有一段代码尝试向用户发送电子邮件并附加pdf文件。但是,收到的电子邮件中的附件总是被破坏(像txt文件这样的简单文件很好)。原始文件没问题。

MultiPartEmail email = new MultiPartEmail();
email.setHostName("mailhost.example.com");
email.addTo("hello@example.com");
email.setFrom("hi@example.com", "hi");
email.setSubject("hello");
email.setMsg("hello");
File file = new File("file.pdf");
email.attach(file);

我还尝试使用EmailAttachment而不是File,如下所示:

EmailAttachment attachment = new EmailAttachment();
attachment.setPath("path-to-file.pdf");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setName("file.pdf");
email.attach(attachment);

在这两种情况下,我收到一封附有file.pdf的电子邮件,但是当我打开它时,我收到Adobe Reader的错误说“打开此文档时出错。文件已损坏且无法修复。 “

有没有人知道修复此问题?

1 个答案:

答案 0 :(得分:1)

我认为您正在使用commons-email依赖项,因为您创建了EmailAttachment的新实例。问题是pdf文件应该是byte[]。所以你可以试着用这样的东西来实现:

email.attach(new org.apache.commons.mail.ByteArrayDataSource(pdfInBytes, "application/pdf"),
  "file.pdf", "PDF description", EmailAttachment.ATTACHMENT);

这对我有commons-email 1.1依赖