# JavaMail - Lokale eMail-Datei einlesen und parsen?



## flaggschiff (24. Okt 2011)

Hallo,

weiß jemand ob es mit JavaMail möglich ist, eine eMail direkt aus einer Datei einzulesen und zu parsen?
Ich möchte die eMails vom lokalen Dateisystem einlesen und nicht über eine POP3/IMAP-Verbindung! 

Konnte bisher nix derartigen finden!?

Danke


----------



## TheDarkRose (24. Okt 2011)

Nein, nicht mit JavaMail


----------



## thE_29 (24. Okt 2011)

Nunja, du könntest die MimeMessage Klasse ableiten..

Diese hat ja den Mailinhalt in dem protected  byte[] content abgespeichert oder hier protected  InputStream contentStream 


Dh, den Stream auf ein FileInputStream umsetzen und dann mal gucken was beim Parsen passiert oder halt das content byte[] mit den Daten befüllen..

Hast du dann den Content befüllt, würde ich noch new MimeMessage(deine Variable von der abgeleiteten Klasse); machen, sodass die MimeMessage Klasse eventuell Flags oder dergleichen setzt..


Du solltest aber mal schauen, was in dem content byte[] oder im Stream drinnen steht..


----------



## TheDarkRose (24. Okt 2011)

Ich seh dabei folgende Probleme:

* Du musst heraus finden, was für ein Emailclient (kurz MUA) verwendet wird.
* Dann musst du mal den Pfad des jeweiligen MUA wissen, wo dieser seine Mails abspeichert.
* Musst du wissen, wie der MUA die Mails abspeichert (MBox, Maildir, etc.)
* Dann kannste dir erst mal Gedanken machen, wie du die richtige Email dort findest.


----------



## flaggschiff (24. Okt 2011)

Mist. Kennt ihr da eine andere Library?


----------



## robertpic71 (24. Okt 2011)

Wir können dir keine andere Library nennen, weil wir nicht wissen womit du/wir es zu tun haben.

Die Art der Rückgewinnung hängt vom verwendeten Client bzw. dessen Speicherformat ab.
Also zuerst einmal den Ort die Art der Speicherung ausffinding machen.

Es gibt:


die Möglichkeit RFC822-konforme (Text)Files via MimeMessage zurückzuparsen 
mbox api um Zugriff auf e-Mail-Clients mit MBOX-Format (z.B. Thunderbird)
und sicher noch weitere Möglichkeiten - abhängig vom Speicherformat


----------



## HoaX (24. Okt 2011)

EML-Dateien kann man direkt per MimeMessage(Session, InputStream) lesen. Oder wars doch InputSource statt InputStream?! Jedenfalls gehts, selbst schon mal gemacht.


----------



## flaggschiff (24. Okt 2011)

Okay. Ich will eMails die Postfix bekanntlich in einem Ordner als Textdatei ablegt einlesen, parsen und in einer Datenbank speichern. Da mir die eMails als Textfile vorliegen möchte ich mir das Verbinden über POP3/Imap ersparen und die Files einfach so auslesen, abspeichern und löschen!


----------



## robertpic71 (24. Okt 2011)

Eigentlich hast du schon 3 Hinweise: (von mir, the_29 und HoaX)

MimeMessage mit dem InputStream erzeugen.

Hier noch die API.

Die Session zu erzeugen sollte auch kein Thema sein - sind im Prinzip nur properties, welche für das Parsen noch nicht benötigt werden.

Außerdem hast du beim Postfix sehr gute Chancen, dass das File wirklich RFC822-konform ist.


----------



## TheDarkRose (25. Okt 2011)

flaggschiff hat gesagt.:


> Okay. Ich will eMails die Postfix bekanntlich in einem Ordner als Textdatei ablegt einlesen, parsen und in einer Datenbank speichern. Da mir die eMails als Textfile vorliegen möchte ich mir das Verbinden über POP3/Imap ersparen und die Files einfach so auslesen, abspeichern und löschen!



Musst du nur mehr wissen der Postfix bzw. der jeweilige LDA die Mails als MBox oder Maildir abspeichert. Aber willst du dir das gemurkse wirklich antun und nicht IMAP verwenden? Denn wenn du da wirklich in die Daten reinpfuscht, könntest du den Postfix bzw. den jeweiligen IMAP/POP3 Server ab und zu in einige Troubles bringen.


----------

