Pregunta

Crearé un archivo EML con un archivo adjunto usando JavaMail.

Creé un simple archivo EML con éxito, pero agregar un archivo adjunto no funciona correctamente. Voy a añadir un archivo PDF. Mi archivo EML se creará correctamente. Si abro el archivo EML generado con Outlook, no encontraré mi archivo PDF como archivo adjunto, sino el archivo EML como archivo adjunto. ¿Alguien tiene una idea?

Probé dos variantes (con el mismo resultado), usé la clase FileDataSource y la forma sencilla con MimeBodyPart # attachFile (File) .

Voy a publicar un ejemplo:

File pdfFile = new File("somePdfFile");

Properties p = System.getProperties();
Session session = Session.getInstance(p);
MimeMessage message = new MimeMessage(session);
// MimeBodyPart txt = new MimeBodyPart();
// txt.setText("");
MimeBodyPart mbp = new MimeBodyPart();
mbp.attachFile(attachment);
// FileDataSource fds = new FileDataSource(attachment);
// fds.setFileTypeMap(new FileTypeMap() {
//    
//   @Override
//   public String getContentType(String arg0) {
//     return "application/pdf";
//   }
//    
//    @Override
//    public String getContentType(File file) {
//      return "application/pdf";
//    }
//      
//  });
//  mbp.setDataHandler(new DataHandler(fds));
//  mbp.setFileName("\"" + attachment.getName() + "\"");
//  mbp.setDisposition(MimePart.ATTACHMENT);
//  mbp.setHeader("Content-ID", "Attachment");
Multipart mp = new MimeMultipart();
//  mp.addBodyPart(txt);
mp.addBodyPart(mbp);
message.setContent(mp);
File emlFile = new File("message.eml");
emlFile.createNewFile();
message.writeTo(new FileOutputStream(emlFile));

// do something with the EML file
// Desktop.getDesktop().open(emlFile);

Cree un archivo .eml (correo electrónico) en Java


Gracias por su respuesta. Subí un archivo PDF (que utilizo para las pruebas, es un simple HelloWorld generado con Crystal Reports) y el archivo EML generado que debe incluir el archivo PDF.

Acabo de darme cuenta de que si abro el archivo EML vinculado con Apple Mail o con Outlook Express, funciona (pero sin posibilidad de edición). Tal vez sea un problema de Microsoft Outlook?

Se eliminaron los enlaces

¿Fue útil?

Solución

Debería intentar agregar las líneas de encabezado que mencioné en la parte superior del mensaje y ver cómo Outlook las trata en ese momento. Agregue un a: , De: , Asunto: y tal vez incluso un Fecha: con datos reales en ellos, y es más probable que Outlook lo trate como un mensaje, en lugar de solo un archivo.

Otros consejos

Zubi, parece que el problema es que el tipo de contenido en el archivo adjunto está establecido en " application / octet-stream " Entonces, parece que el lector de correo está tomando el archivo PDF como una pantalla alternativa para el " texto " cuerpo del mensaje que no existe (solo está en blanco).

Tendrás que perdonarme, ha pasado más de un año desde que traté con Mime, pero creo que querrás A) Poner un texto del cuerpo en el mensaje, B) Asegúrate del tipo en el archivo adjunto se establece en la aplicación / pdf. Con suerte, esto evitará que la lectura del correo intente mostrar el PDF como el cuerpo principal del mensaje.

Aparte de eso, parece normal ... Ahora, Outlook puede MITAR porque no hay encabezados RFC 822 en el cuerpo principal. Es posible que desee agregar, por lo menos, un From: , To: y un Subject: .

El mensaje pasó el código de análisis MY MIME ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top