繁体   English   中英

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

[英]PDF file sent as email attachment becomes corrupted (java)

我有一段代码试图向用户发送电子邮件并附加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的错误消息,提示“打开此文档时出错。该文件已损坏,无法修复。”

有人知道解决办法吗?

我支持您使用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依赖关系

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM