Frage

Wer weiß, wie dies zu tun? Ich habe alle Informationen der E-Mail (Körper, Subjekt, von, bis, cc, bcc) und benötigen eine EML-Datei aus ihm heraus zu erzeugen.

War es hilfreich?

Lösung

können Sie konstruieren javax.mail.Message Objekt ( oder haben sie bereits aus dem Mail-Server aufgebaut) und dann können Sie writeTo() Methode speichern Datei. Siehe Java Mail API für weitere Informationen.

Andere Tipps

können Sie erstellen eml-Dateien mit dem folgenden Code. Es funktioniert gut mit thunder und wahrscheinlich mit anderem E-Mail-Clients:

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

EML-Dateien sind nur einfache Textdateien. Die Kopfstücke sind aus dem Körper durch eine Leerzeile getrennt. Header wie folgt aussehen:

From: "DR CLEMENT OKON" <drclement@nigerianspam.com>
To: "You" <you@yourdomain.com>
Subject: REQUEST FOR URGENT BUSINESS RELATIONSHIP 
Date: Tue, 30 Sep 2008 09:42:47 -0400

Für mehr Informationen, die offizielle Spezifikation ist RFC 2822 . Es ist eigentlich nicht so schwer, wie einige RFCs zu lesen.

Edit: Als ich sagte, „Klartext“ Ich habe eine Sekunde lang dachte sollte. Ich wirklich reine ASCII gemeint - und nicht die 8-Bit „extended ASCII“ entweder -. Nur bis zu Charakter 127. Wenn Sie mehr als sieben Bits wollen, benötigen Sie eine Art von Codierung und die Dinge kompliziert

Mit Blick auf einem typischen EML Datei, die es wie ein rohes Abbild der Textkommunikation sucht, die auf den Server ging. So ist es eine Textdatei, die den Mail-Header und Körper enthält. Um Ihre Anlagen, verschiedene Ansichten, usw. im richtigen Format in der EML-Datei müssen Sie MIME-codieren den Körper und Teile davon.

Wenn Sie HTML-Material hinzufügen möchten, müssen Sie fügen

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

(wie Marco Sulla sagte), sondern auch ändern

message.setContent(multipart);

message.setContent(multipart,"text/html");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top