2008-10-01 2 views

ответ

18

Вы можете построить объект javax.mail.Message (или он уже создан с почтового сервера), а затем вы можете использовать метод writeTo(), чтобы сохранить его в файле. Для получения дополнительной информации см. JavaMail API.

+0

... пакет javax.mail не существует – Supuhstar

+1

@Supuhstar - Старая нить, но для тех, кто еще читает это, это зависит от JavaMail API. – berry120

9

EML-файлы - это просто текстовые файлы. Заголовки отделены от тела пустой линией. Заголовки выглядеть следующим образом:

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 

Для получения дополнительной информации, официальная спецификация RFC 2822. На самом деле это не так сложно читать, как некоторые RFC.

Редактировать: Когда я сказал «обычный текст», я должен был подумать секунду. Я действительно имел в виду простой ASCII - а не 8-разрядный «расширенный ASCII» - либо до символа 127. Если вам нужно больше семи бит, вам нужна какая-то кодировка, и все становится сложнее.

1

Рассматривая типичный файл EML, он выглядит как необработанный дамп текстовой связи, поступающей на сервер. Таким образом, это текстовый файл, содержащий заголовки и тело письма. Чтобы получить вложения, разные представления и т. Д. В правильном формате внутри EML-файла, вам нужно MIME-кодировать тело и его части.

19

Вы можете создать файлы eml со следующим кодом. Он отлично работает с громовой и, возможно, с другими почтовыми клиентами:

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

Чтобы сохранить сообщение html, добавьте 'content.setHeader (« Content-Type »,« text/html »);' –

Смежные вопросы