Tôi muốn gửi Pdf dưới dạng tệp đính kèm e-mail (Tôi đang sử dụng API JavaMail). Tôi có Pdf (được tạo bởi jasper) dưới dạng byte[]
.Gửi e-mail trong phần đính kèm Pdf dưới dạng dòng
public InputStream exportPdfToInputStream(User user) throws ParseErrorException, MethodInvocationException, ResourceNotFoundException, JRException, IOException{
JasperPrint jasperPrint = createJasperPrintObject(user);
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
return new ByteArrayInputStream(pdfByteArray);
}
Đây là mã mà tôi đang sử dụng để xây dựng các MimeBodyPart
đó sẽ là tập tin đính kèm:
if (arrayInputStream != null && arrayInputStream instanceof ByteArrayInputStream) {
MimeBodyPart attachment = new MimeBodyPart(arrayInputStream);
attachment.setHeader("Content-Type", "application/pdf");
mimeMultipart.addBodyPart(attachment);
}
Mã này mang lại cho tôi lỗi này:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.IOException: Error in encoded stream: needed at least 2 valid base64 characters, but only got 1 before padding character (=), the 10 most recent characters were: "\24\163\193\n\185\194\216#\208="
@mtraut: Bạn đã nói không chuyển đổi nó thành InputStream và ngược lại, nhưng làm cách nào tôi có thể thực hiện mà không có InputStream? – Atticus
sử dụng ** ByteArrayDataSource (byte [] dữ liệu, String loại) ** constructor và "pdfByteArray" – mtraut
@mtraut: Cảm ơn, đó là những gì tôi đã gửi trong câu trả lời của tôi. Nhưng dù gì cũng cảm ơn. Tôi mặc dù có một cách đơn giản hơn để làm điều đó! – Atticus