HTML-Mail empfangen und parsen

Android_Garden

Grünschnabel
Guten Abend liebes Forum,

ich hoffe ich bin in diesem Unterforum richtig. Ich bin Anfänger in sachen Programmierung, ich bin gerade dabei mir Java beizubringen. Wobei jedoch Anfänger nicht ganz richtig ist, da ich in der Berufsschule bereits PHP-Programmierung hatte. Aber nun genug von mir. ;)

Nun zu meinem "Projekt":

Gegeben:

- ein Netzwerkfähiges Gerät sendet immer E-Mails mit Tageswerten.
- diese daten werden als HTML-Mail versendet.
- das Gerät kann die Daten nur als Mail versenden und es ist keine gesonderte Datei mit den Werten als Anhang dabei.

Nun möchte ich gern die Daten aus dieser E-Mail (wenn möglich automatisch) in eine Format bringen, das ich dann in eine Datenbank einlesen lassen kann. Ich habe da mal an eine .csv-Datei gedacht da ich mit Datenbanken die mit .csv Daten gefütter werden täglich in der Arbeit zu tun habe und ich daher hierbei keine Problem sehe.
Nur stehe ich seit ca. einer Woche auf dem Schlauch und kann beim besten willen keinen Lösungsweg finden.

auch ein Wochenende voller Dauer-Googlen hat mir keinen erfolg gebracht. Was wohl auch daran liegt das ich noch nicht mal einen genauen Lösungsansatz habe.


Als einfachsten aber wahrscheinlich nicht ganz Elegantesten Weg hab ich mir folgendes überlegt:
HTML-Mail wird als .html-Datei aus E-Mail Client exportiert -> .html-Datei wird in .csv umgewandelt -> .csv wird in Datenbank importiert

Vielleicht hatte jemand schon mal eine Ähnliche Aufgabenstellung und kann mir ein paar Tipps geben, wie ich weitermachen kann sollte ich mich mit meiner Idee nicht ganz auf dem Holzweg befinden ;) .
 

sheel

I love Asm
Hi und Willkommen bei tutorials.de,

Es steht also fest, dass es Java sein soll? (dann verschieb ich)
In dem Bereich hier sind eher sprachunabhängige Sachen oder Fragen,
welche Sprache am besten geeignet wäre.

Und das soll ein "normales" Clientprogramm auf Windows/Linux werden;
oder etwa Android (Benutzername)?


Wäre es denkbar, dass das Programm sich das Mail direkt holt,
statt den Mailclient empfangen lassen und von dort raus?
Dürfte nämlich fast einfacher sein, und unabhängig vom Mailclient.

Und um welche DB geht es?
Hier wäre es übrigens auch irgendwie "robuster", keinen Umweg über CSV zu machen,
sondern per JDBC oder Ähnlichem direkt aus dem Programm raus die Daten einzutragen.
 

Android_Garden

Grünschnabel
Hallo und Danke fürs verschieben,

ja also wenn es Java wäre könnt ich mich gut damit Anfreunden, dann hätte ich was wo ich das Neuerlernte gleich anwenden kann ;)

Ich habe bei meinen ersten versuchen Thunderbird als Client benutzt aber die Lösung mit einem Programm das die Mails abholt gefällt mir besser. An sowas habe ich auch schon gedacht. Aber ich habe in dieser hinsicht noch zu wenig Java-Erfahrung das ich sowas schon selber machen kann.

Von der Datenbank her würde es sich um eine mysql Datenbank handeln, da ich bereits einen mysql-server am laufen hab.
 

alxy

Erfahrenes Mitglied
Das kannste doch mit (fast) jeder Programmiersprache machen, mit manchen leichter mit anderen schwerer. ich würde es mit PHP machen, weil ich da direkt einige Sachen im Kopf zu habe, da ich es am häufigsten benutze :p
 

sheel

I love Asm
@Verschieben: Das war vorher eine Frage, jetzt ists erst verschoben : )

Und nur nochmal um sicherzugehen,
es soll normal am eigenen Computer auf Windows/Linux laufen?
Kein Webservice, kein Android oder exotischere Sachen?


Zum ersten Teil, Mail empfangen:
Wieviel Erfahrung hast du mit Java bisher?

Hast du schon mal Jar-Bibliotheken verwendet?
 

Android_Garden

Grünschnabel
Oh dann hab ich das wohl falsch verstanden^^

also meine Programmierfähigkeiten in Java sind noch sehr gering, ich hätte das ganze als Einstiegsprojekt angesehen.

Ja das ganze soll auf einem Windows/linux Server laufen. Ich mir noch nicht ganz sicher kommt drauf an was auf meiner Hardware besser läuft.
 

sheel

I love Asm
also meine Programmierfähigkeiten in Java sind noch sehr gering, ich hätte das ganze als Einstiegsprojekt angesehen.
Etwas schwierig für den Anfang.

Lad dir mal Javamail herunter:
http://www.oracle.com/technetwork/java/javamail/index.html
und versuch, die Jar-Dateien in lib (smtp und imap nicht) in ein eigenes Programm einzubinden.
Wenn alles richtig ist, sollte zB. ein
Java:
import javax.mail.Folder;
keine Compilerfehler geben.
Verwendest du Eclipse?
 

Android_Garden

Grünschnabel
So hab leider die letzten tage wenig zeit gehabt was zu schreiben aber jetzt ^^

Etwas schwierig für den Anfang.

Ich weiß dass das für den Anfang schon schwer ist, aber ich lerne Sachen besser wenn ich dann gleich was schwierigeres mache als nur stundenlang irgendwechle println("Hallo Welt") sachen zu programmieren ;-)

Verwendest du Eclipse?

Ja als Entwicklungsumgebung werde/wollte ich Eclipse nutzen
 

sheel

I love Asm
Also Javamail beim Link oben downloaden
und beim eigenen Javaprojekt in Eclipse importieren.
Die erste Antwort hier hat eine Beschreibung mit Screenshot, wo das ist:
http://stackoverflow.com/questions/3280353/how-to-import-a-jar-in-eclipse
Als Test, ob es funktioniert, das oben genannte import versuchen.

Dann wäre hier ein einfaches Beispiel, wie man damit POP3-Mails abruft
(ohne HTML oder Anhänge etc.etc. zu berücksichtigen)
http://www.java2s.com/Code/Java/Email/JavaMailPOP3Client.htm
Zugangsdaten zum Server müssen natürlich angepasst werden.

Probier das mal aus; schick dir selbst ein Beispielmail mit irgendwelchen Tageswerten
und bieg das Programm so hin, dass du den relevanten Mailinhalt irgendwo
separat in einen String etc. bekommst.

Was dann für den Mailteil noch fehlt:
Die abgerufenen Mails vom Server löschen,
damit sie beim nächsten Abruf nicht wieder dabei sind :google:

Da ich deinen genauen Kenntnisstand nicht kenne,
kann ich zurzeit schwer auf Problemstellen eingehen.
Daher: Fragen willkommen :)
 

Android_Garden

Grünschnabel
Vielen Dank
Das ist doch schon mal was, ich werd mich dann mal gleich drann machen das ich das ganze umsetzen kann (ich versuche es jedenfalls ^^)

sollte ich auf Probleme stoßen werde ich mich melden... das Forum hier hat mir in kurzer Zeit schon sehr geholfen ;-)