2016-03-23 22 views
3

Ich habe eine eingehende MimeMessage in meinem JAMES Mail-Server. Ich möchte eine EML-Datei erstellen, die die Nachricht vollständig ausgibt. Ich habe versucht, die writeTo Methode von MimeMessage verwenden - resultierende Datei enthält nur den Textkörper der E-Mail. Die Anhänge werden nicht in die eml-Datei geschrieben. Mein Code ist etwas wieJava MimeMessage zu eml Datei mit allen Anhängen

String logFileName = "dumpNow.eml"; 
incomingEmail.getMessage().writeTo(new FileOutputStream(new File(logFileName))); 

Ich bekomme keine mehrteiligen Inhalt in der Dump. Gibt es irgendwelche Util zur Verfügung? Apache Mimeutils gibt auch das gleiche Ergebnis.

+0

Das sollte funktionieren. Welche Version von JavaMail verwenden Sie? –

+0

Es gibt einige Probleme, wenn die Nachricht von Mac-Maschinen stammt. Ich sehe nur ein Problem für diese Nachrichten. – Kris

+0

Sie müssen mehr Details bereitstellen. Was ist ein Beispiel für eine fehlgeschlagene Nachricht? Wie scheitert es? Welche Version von JavaMail verwenden Sie? Ist es genau eine MimeMessage oder ist es eine Unterklasse? –

Antwort

0

Versuchen Sie folgendes:

// Create your attachement file 
File emlFile = new File("myFile.eml"); 
emlFile.createNewFile(); 
incomingEmail.getMessage().writeTo(new FileOutputStream(emlFile)); 

MimeBodyPart attachment = new MimeBodyPart(); 

DataSource source = new FileDataSource(emlFile); 

attachment.setDataHandler(new DataHandler(source)); 
attachment.setHeader("Content-Type", "application/octet-stream"); 
attachment.setFileName("myFileName.eml"); 
attachment.setDescription("My file description"); 
attachment.setDisposition(Part.ATTACHMENT); 

multipart.addBodyPart(attachmentFile); 

Ich denke, es liegt daran, dass Sie den Header und die Disposition im Code setzen verpasst.

Hoffe es hilft,

+0

Ich denke, das ist nicht relevant für die Frage :-). Ich habe erwähnt, dass ein mehrteiliger Inhalt in eine Datei (remote zu lokal) gedumpt wird. Scheint du hast es umgekehrt. – Kris

+0

BTW, ich musste den Body-Tree für E-Mails parsen, die den mehrteiligen Inhalt hatten, um dies zu tun. – Kris