Javax Mail 将 PDF 作为文件发送

JavaxMail sending PDF as a File

嗨,Whosebug 社区,

我正在尝试解决我在使用 Javax Mail 时遇到的问题,我有一个 SMTP 服务可以发送带附件的邮件。我正确地发送了 PDF,如果我查看电子邮件,它会显示它是一个 PDF 文档,但是当我按下下载时,将其另存为一个文件,并且可以由 acrobat reader 正确打开。

这是我设置文档的代码

...
    byte[] bytearray = "This is a PDF Document".getBytes();
    ByteArrayDataSource bds = new ByteArrayDataSource(bytearray, "application/pdf");
    attachmentBodyPart.setDataHandler(new DataHandler(bds));
    attachmentBodyPart.setFileName("prueba");
    attachmentBodyPart.setHeader("Content-Type", "application/pdf");
    multipart.addBodyPart(attachmentBodyPart);
...

这是收到邮件的图片

这是我的下载方式。

我该怎么办?我缺少什么?

谢谢指教。

您只是将文本作为 pdf 文件发送,正如预期的那样,它不是可以被任何 pdf 打开的有效 pdf reader。

您可以使用像 iText 这样的库来创建有效的 pdf 文件,然后将其附加到电子邮件中。

使用 itext 的示例代码:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("iTextHelloWorld.pdf"));

document.open();
Font font = FontFactory.getFont(FontFactory.COURIER, 16, BaseColor.BLACK);
Chunk chunk = new Chunk("Hello World", font);

document.add(chunk);
document.close();

进一步阅读:PDFs in java