Deseo enviar un PDF como archivo adjunto de correo electrónico (estoy usando la API de JavaMail). Tengo el Pdf (generado por jasper) como byte[]
.Enviar correo electrónico en PDF adjunto como secuencia
public InputStream exportPdfToInputStream(User user) throws ParseErrorException, MethodInvocationException, ResourceNotFoundException, JRException, IOException{
JasperPrint jasperPrint = createJasperPrintObject(user);
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
return new ByteArrayInputStream(pdfByteArray);
}
Aquí está el código que estoy usando para construir el MimeBodyPart
que será el archivo adjunto:
if (arrayInputStream != null && arrayInputStream instanceof ByteArrayInputStream) {
MimeBodyPart attachment = new MimeBodyPart(arrayInputStream);
attachment.setHeader("Content-Type", "application/pdf");
mimeMultipart.addBodyPart(attachment);
}
Este código me da este error:
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: dijiste que no lo convirtieras a InputStream y volvieras, pero ¿cómo puedo hacerlo sin un InputStream? – Atticus
use el constructor ** ByteArrayDataSource (byte [] data, String type) ** y el "pdfByteArray" – mtraut
@mtraut: Gracias, eso es lo que ya he enviado en mi respuesta. Pero gracias de cualquier manera. ¡Pensé que hay otra forma aún más simple de hacerlo! – Atticus