Создайте файл .eml (электронная почта) на Java

Кто-нибудь знает, как это сделать? Я получил всю информацию об электронном письме (тело, тема, от кого, кому, cc, bcc), и мне нужно сгенерировать из него файл .eml.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
23
0
35 585
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Файлы 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. Если вам нужно больше семи бит, вам понадобится какая-то кодировка, и все усложняется.

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

Ответ принят как подходящий

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

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

Ben Leggiero 16.10.2010 15:12

@Supuhstar - Старая ветка, но для всех, кто ее читает, она полагается на API javamail.

Michael Berry 26.07.2011 19:25

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

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);
    }
}

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

Marco Sulla 09.11.2017 19:10

Если вы хотите добавить HTML-материал, вам нужно добавить

content.setHeader("Content-Type", "text/html"); 

(как сказал Марко Сулла), но также измениться

message.setContent(multipart);

к

message.setContent(multipart,"text/html");

Другие вопросы по теме