Algorithmus zum Parsen von eMail-Verlauf

cd_brenner

Aktives Mitglied
Hallo liebe Community,

ich möchte gerne eine interne Messaging-App mit einem IMAP-Account synchronisieren. Dabei würde ein per Cron gesteuertes PHP-Script regelmäßig die hinterlegten IMAP-Accounts checken und neue Mails in die Nachrichten-Tabelle der Datenbank einschleusen.

Das ganze wird nicht unbedingt ein reiner Web-Mailclient sondern eher ein News-Aggregator, der interne PMs, IMAP-Accounts und RSS-Feeds kombiniert. Deswegen sollen die Mails wie alle anderen News in einer Tabelle gespeichert werden.

Wenn jetzt via eMail öfter hin und hergeschrieben wird, dann ist es üblich, dass die Mail-Clients immer wieder den kompletten Nachrichtenverlauf anhängen, und diese auch recht individuell formatieren.

Mir stellt sich jetzt schon seit einiger Zeit die Frage, wie ich zuverlässig immer nur quasi das zuletzt geschriebene aus dem eMail-Verlauf herausparsen kann um nur diese eine neue Antwort (und nicht wieder den kompletten Verlauf) in meiner Datenbank einzutragen.

Beim Heraussenden einer neuen eMail wird dann einfach der ganze Nachrichtenverlauf rekonstruiert.

Vielleicht hat ja jemand eine Idee, wo ich ansetzen kann.

Vielen Dank,
Markus
 
Am besten ist es bei einer Antwort nicht den Nachrichtenverlauf anzuhängen.

Sollte dies gewünscht sein, machst du am besten am ende in die Sigantur eine eindeutige Zeichenkette und alles hinter dieser Zeichenkette wird abgeschnitten und nicht mehr angezeigt.
Das Problem ist, dass einige Leute ihre Antwort nicht über den eigentlichen Text schreiben, sondern darunter. Diese E-Mails würden so verloren gehen.
 
Ich frage mich, ob PHP für sowas die richtige Wahl ist? Aber egal, darum gehts nicht
biggrin.gif



Es gibt ja einige Pseudostandarts (z.B. rfc3676) welche empfehlen "--" als Kennzeichnung der Signatur empfehlen. In der Praxis halten sich sogar auch einige daran..
wink.gif


Ansonsten fällt mir da spontan eine Kombination aus etwas regex und diff ein, mit welcher du den "unterschied" zwischen 2 Mailtexten ermitteln kannst. Braucht aber sicher etwas Feintuning bis das wirklich sauber und sicher läuft.

Wann und wie Mails zusammenhängen solltest du über den Header ermitteln können, dort gibts meistens (je nach Client/Mailserver) Infos wie "References", "In-Reply-To" und eben "Message-Id".
 
Danke schonmal für die ersten Antworten.

So wie das klingt werde ich eher die gesamte Mail (inkl. der ganzen History) speichern und dynamisch versuchen, den neuesten Teil rauszufinden. Falls dies nicht funktioniert gibt's optional immer noch die Möglichkeit, sich die eMail ganz anzeigen zu lassen.
In dem Fall steht natürlich auch das direkte Abrufen via IMAP zur Debatte.

Vielen Dank,
Markus
 
Zurück
Oben