JavaxMail отправляет PDF как файл - PullRequest
0 голосов
/ 24 января 2020

Привет, сообщество StackOverflow,

Я пытаюсь решить проблему с 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);
...

А вот изображения полученного письма

email received

Вот как я его скачиваю. Download as a file

Что мне делать? Чего мне не хватает?

Спасибо за совет.

1 Ответ

1 голос
/ 24 января 2020

Вы просто отправляете текст в виде файла PDF, который, как и ожидалось, не будет действительным файлом PDF, который может быть открыт любым устройством чтения PDF.

Вы можете использовать некоторую библиотеку, такую ​​как 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();

Для дальнейшего чтения: PDF-файлы в java

...