我有一段代码尝试向用户发送电子邮件并附加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的错误说“打开此文档时出错。文件已损坏且无法修复。 “
有没有人知道修复此问题?
答案 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
依赖