JavaMail - Lokale eMail-Datei einlesen und parsen?

flaggschiff

Mitglied
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
 
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..
 
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.
 
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
 
EML-Dateien kann man direkt per MimeMessage(Session, InputStream) lesen. Oder wars doch InputSource statt InputStream?! Jedenfalls gehts, selbst schon mal gemacht.
 
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!
 
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.
 
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.
 

Neue Themen


Zurück
Oben