2008-10-01 26 views

Respuesta

18

Puede construir el objeto javax.mail.Message (o ya lo ha construido desde el servidor de correo) y luego puede usar el método writeTo() para guardarlo en el archivo. Ver JavaMail API para obtener más información.

+0

... javax.mail paquete no existe – Supuhstar

+1

@Supuhstar - Antiguo pero para cualquier otra persona que lee esto, esto se basa en la API JavaMail. – berry120

9

Los archivos EML son simples archivos de texto. Los encabezados están separados del cuerpo por una línea en blanco. Encabezados aspecto:

From: "DR CLEMENT OKON" <[email protected]> 
To: "You" <[email protected]> 
Subject: REQUEST FOR URGENT BUSINESS RELATIONSHIP 
Date: Tue, 30 Sep 2008 09:42:47 -0400 

Para obtener más información, la especificación oficial es RFC 2822. De hecho, no es tan difícil de leer como algunos RFC.

Editar: Cuando dije "texto sin formato", debería haber pensado por un segundo. Realmente quería decir ASCII simple, y no el "ASCII extendido" de 8 bits, solo hasta el carácter 127. Si quieres más de siete bits, necesitas algún tipo de codificación y las cosas se complican.

1

Al mirar un archivo EML típico, parece un volcado sin formato de la comunicación de texto que se envió al servidor. Por lo tanto, es un archivo de texto que contiene los encabezados y el cuerpo del correo. Para obtener sus archivos adjuntos, vistas diferentes, etc. en el formato correcto dentro del archivo EML, necesita codificar MIME el cuerpo y sus partes.

19

Puede crear archivos eml con el siguiente código. Funciona bien con Thunderbird y probablemente con otros clientes de correo electrónico:

public static void createMessage(String to, String from, String subject, String body, List<File> attachments) { 
    try { 
     Message message = new MimeMessage(Session.getInstance(System.getProperties())); 
     message.setFrom(new InternetAddress(from)); 
     message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); 
     message.setSubject(subject); 
     // create the message part 
     MimeBodyPart content = new MimeBodyPart(); 
     // fill message 
     content.setText(body); 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(content); 
     // add attachments 
     for(File file : attachments) { 
      MimeBodyPart attachment = new MimeBodyPart(); 
      DataSource source = new FileDataSource(file); 
      attachment.setDataHandler(new DataHandler(source)); 
      attachment.setFileName(file.getName()); 
      multipart.addBodyPart(attachment); 
     } 
     // integration 
     message.setContent(multipart); 
     // store file 
     message.writeTo(new FileOutputStream(new File("c:/mail.eml"))); 
    } catch (MessagingException ex) { 
     Logger.getLogger(Mailkit.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(Mailkit.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+0

Para guardar un mensaje html, agregue 'content.setHeader (" Content-Type "," text/html ");' –

Cuestiones relacionadas