Wie man einen E-Mail-Parser von Grund auf erstellt

Ihr Chef hat Sie also gebeten, das "E-Mail-Problem" zu lösen, das das Unternehmen ausbremst. Es gibt Hunderte von automatisierten E-Mails, deren Daten jeden Morgen manuell eingegeben werden müssen und die die Postfächer der Mitarbeiter blockieren.

Sie, klug und effizient, erkennen sofort das Potenzial, ein E-Mail-Parsing-System zu erstellen. Großartige Idee! Allerdings könnte es etwas aufwendiger werden als nur ein paar Skripte und etwas Ellbogenschmalz. Hier sind sechs Schritte, um einen E-Mail-Parser zu erstellen und erfolgreich Ihren Workflow für die E-Mail-Dateneingabe zu automatisieren.

Bevor wir starten: Definition von "Parsen" und was "Parsing" ist

In der Informatik ist Parsen die Handlung, einen Text nach einem bestimmten Regelsatz in Unterteile zu zerlegen.

Ein E-Mail-Parser ist eine Möglichkeit, einen Computer dazu zu bringen, E-Mails zu lesen und gemäß einem Regelsatz auf sie zu reagieren. Idealerweise extrahiert dieses System automatisch relevante Daten aus diesen E-Mails und speist sie in Ihre Backoffice-Anwendung ein. Lesen Sie den folgenden Artikel für einen tiefen Einblick in das E-Mail-Parsing.

Unverschämte Eigenwerbung: Kennen Sie Parseur?

Das Erstellen eines eigenen E-Mail-Parsers ist ein spannendes Projekt, um zu verstehen, wie die Dinge unter der Haube funktionieren.

Aber es ist ein zeitraubendes Projekt.

Erstellen Sie Ihr kostenloses Konto
Sparen Sie Zeit und Mühe mit Parseur. Automatisieren Sie Ihre Dokumente.

Parseur wurde Ende 2015 von Grund auf erstellt und allein das Backend benötigte rund 5.000 Mannstunden über einen Zeitraum von sechs Jahren. Auch das Frontend (die gesamte Benutzeroberfläche, inklusive Template Editor) erforderte Tausende von Mannstunden. Das Team hinter Parseur besteht aus erfahrenen Entwicklern mit mehr als 20 Jahren professioneller Programmiererfahrung.

Wir sind immer noch nicht fertig und können nicht einmal abschätzen, wie lange es dauern würde, einen "hinreichend guten" Textparser zu bauen.

Wenn Sie schnelle Ergebnisse brauchen, probieren Sie Parseur aus. Parseur ist ein verwalteter und benutzerfreundlicher E-Mail-Parser, der Ihnen Stunden bei der Einrichtung einer eigenen Lösung spart. Werfen Sie einen Blick auf das umfangreiche Paket an Parseur-Funktionen.

1. Die E-Mails erhalten

Im Moment gehen die E-Mails in den individuellen Posteingängen der Mitarbeiter, den Mailinglisten des Teams oder im unternehmensweiten Postfach ein.

Der erste Schritt wäre die Einrichtung eines E-Mail-Kontos, um all diese Postfächer zu zentralisieren. Oder, Gott bewahre, richten Sie Ihren eigenen E-Mail-Server ein, auch bekannt als SMTP-Server.

Wenn Sie wissen, was Sie tun, finden Sie hier ein paar SMTP-Server, die derzeit sehr beliebt sind:

  • Exim ist ein kostenloser, quelloffener E-Mail-Transfer-Agent (noch ein anderer Name für E-Mail-Server). Er ist der beliebteste SMTP-Server und gewinnt etwas schneller an Popularität als der Zweitplatzierte, Postfix.
  • Postfix ist ebenfalls kostenlos und Open Source. Er hat den Ruf, "einfach zu funktionieren", mit minimalen Problemen. Laut diesem Artikel über die Marktanteile von E-Mail-Servern stellen Exim und Postfix zusammen 80 % aller E-Mail-Server dar.
  • Auf der Microsoft-Seite gibt es den allgegenwärtigen Exchange. Sie können E-Mails über EWS abrufen, anstatt über das altmodische POP3 oder IMAP. Mittlerweile können Sie Microsoft sogar dazu bringen, ihn für Sie zu hosten, gegen eine Gebühr.
  • Bauen Sie Ihren eigenen. Dieser Weg wird lang und kurvenreich, aber Sie werden unterwegs viel lernen. Am Ende könnte Ihr Server besser zu Ihren Bedürfnissen passen. Es sei denn, Ihre Bedürfnisse implizieren keine Kompatibilität mit den unzähligen E-Mail-Clients da draußen. Wenn Sie entschlossen sind, diesen Weg zu gehen, bietet Python ein schönes Modul in seiner Standardbibliothek, um Ihnen den Einstieg zu erleichtern. Werfen Sie einen Blick auf smtpd.

Beachten Sie, dass das Versenden vieler E-Mails, ohne auf die schwarze Liste gesetzt zu werden, eine Kunst für sich ist und besser den Spezialisten überlassen wird.

Beachten Sie auch, dass die Beliebtheit, einen eigenen E-Mail-Server einzurichten, abnimmt. In unserer Ära der Cloud und von SaaS ist es bequemer, einen gehosteten E-Mail-Service zu nutzen, der die schmutzige E-Mail-Arbeit für Sie erledigt. Zu den größten Playern in diesem Bereich zählen:

  • Postmark legt Wert auf Zustellbarkeit und Zuverlässigkeit. Außerdem gibt es einen kostenlosen Plan.
  • Mandrill hatte den First-Mover-Vorteil und ist nach wie vor beliebt. Er konzentriert sich auf Marketing- und Transaktions-E-Mails.
  • Sendgrid positioniert sich ebenfalls als Plattform für Marketing- und Transaktions-E-Mails.
  • Mailgun richtet sich mehr an Entwickler und API-Anbindung. Auch hier gibt es einen kostenlosen Tarif.

Wir bei Parseur lieben Postmark. Die API ist großartig und die Dokumentation hervorragend. Es gibt viele SDKs für alle gängigeren Programmiersprachen.

2. Die E-Mail in ein geeignetes Datenformat übersetzen

E-Mail ist ein altes Format, ein "vor Star Wars erfunden"-alt, und hat im Laufe der Jahrzehnte einige Macken angesammelt. Zum Beispiel war die Unterstützung internationaler (nicht-US) Zeichen in der Ursprungsspezifikation nicht vorgesehen. Um Sonderzeichen wie € zu verarbeiten, müssen Sie 3 technische Dokumente (auch RFC genannt) berücksichtigen:

  • RFC 2047 bietet Unterstützung für internationale Namen und Betreffzeilen in E-Mail-Headern
  • RFC 5890 bietet Unterstützung für internationale Domainnamen im Domain Name System (DNS)
  • RFC 6532 erlaubt die Verwendung von UTF-8 (eine weitere Möglichkeit, internationalen Text zu speichern) im Header-Bereich einer E-Mail

Auch hierfür können Dienste wie Postmark oder Mailgun Ihre Rettung sein und die Übersetzung für Sie erledigen. Sie können Horrorgeschichten über UTF-8, MIME und cp1252 vergessen (nie von UTF-8, MIME oder cp1252 gehört? Ich beneide Sie um Ihr Leben).

Wenn Sie zum Beispiel Mailgun nutzen, empfangen deren Server die E-Mail für Sie und wandeln sie in ein einfach nutzbares JSON-Dokument um, wobei sie sich um alle RFCs kümmern, die es gibt. Dieses Dokument wird dann als Webhook per HTTP POST an eine von Ihnen gewählte URL auf Ihrem eigenen Server gesendet.

Für die Neugierigen finden Sie hier eine Liste aller SMTP-bezogenen RFCs. Gern geschehen.

Eine einfache E-Mail, die bei Mailgun eingeht, sieht zum Beispiel so auf Ihrem Server aus:

{
  "subject": "My favorite café",
  "sender": "John Doe <[email protected]>",
  "recipient": "Mr. Parseur <[email protected]>",
  "message": "It's called Awesome Café! See directions in the attachment. Bye.",
  "attachements": [
    { "name": "directions.pdf", "content": "https://url.with.content" },
    { "name": "cappucino.jpg", "content": "https://another.content.url" }
  ]
  /*... weitere interessante Daten hier (lies die Doku, Luke) ...*/
}

Ist das nicht wunderbar? Vergleichen Sie das mal mit einem klassischen E-Mail-Format:

  MIME-Version: 1.0
  Received: by 102.29.23.176 with HTTP; Sat, 12 Aug 2016 14:13:31 -0700 (PDT)
  Date: Sat, 12 Aug 2016 14:13:31 -0700
  Delivered-To: =?ISO-8859-1?Q?Mr. Parseur <[email protected]>
  Message-ID: <CAAJL_=kPAJZ=fryb21wBOALp8-XOEL-h9j84s3SjpXYQjN3Z3A@mail.gmail.com>
  Subject: =?ISO-8859-1?Q?My=20Favorite=20Caf=E9
  From: =?ISO-8859-1?Q?John Doe <[email protected]>
  To: =?ISO-8859-1?Q?Mr. Parseur <[email protected]>
  Content-Type: multipart/mixed; boundary=mixed
  ==mixed
  Content-Type: multipart/alternative; boundary=alternative
  ==alternative
  Content-Type: text/plain; charset="utf-8"
  It's called Awesome Caf=C3=A9! See directions in the attachm= ent. Bye.
  ==alternative
  Content-Type: text/html; charset="utf-8"
  It's called <b>Awesome Caf=C3=A9</b>! See directions in the = attachment. Bye. ==alternative== ==mixed
  Content-Type: document/pdf; name="directions.pdf"
  Content-Disposition: attachment; filename="directions.pdf"
  Content-Transfer-Encoding: base64
  iVBORw [... der gesamte kodierte Anhang hier ...] RK5CYII=
  ==mixed
  Content-Type: image/jpg; name="capuccino.jpg"
  Content-Disposition: attachment; filename="capuccino.jpg"
  Content-Transfer-Encoding: base64
  G+aHAAAA [... ein weiterer Anhang kodiert hier ...] ORK5CYII=
  ==mixed==

Zum Glück bieten die meisten besseren Programmiersprachen Bibliotheken, um E-Mails zu entschlüsseln, wie das Modul email für Python oder die RubyMail-Bibliothek für Ruby.

3. Die Daten in die Datenbank bringen

Ab hier können Sie sich auf Ihre Programmierkenntnisse verlassen, um all diese HTTP-Anfragen zu verarbeiten und sie als saubere Einträge in Ihre Wunschdatenbank zu speichern.

Hier einige beliebte Programmiersprachen und Frameworks, nach wachsender Trendigkeit sortiert:

Der Programmcode sollte trivial sein, solange Sie auf kein bestimmtes Format zielen. Allerdings müssen Sie möglicherweise prüfen, welches Format Ihre Unternehmenssoftware akzeptiert, und diesen Export entsprechend gestalten. Zu den gängigen Austauschformaten gehören CSV und JSON, aber manche Business-Anwendungen nutzen auch obskure, binäre Formate.

Wenn Sie nur die Speicherung benötigen (eventuell für Ihre eigene individuelle Lösung), bleibt nur die Entscheidung, wie Sie speichern wollen.

Wenn Sie sicher wissen, dass Sie niemals Statistiken oder nicht-sequenzielle Operationen auf den gespeicherten E-Mails durchführen werden, können Sie zum Beispiel MongoDB verwenden. Allerdings rate ich davon ab – Gründe liefert dieser großartige Blogbeitrag.

Jedes relationale Datenbankmanagementsystem auf Basis von SQL speichert Ihre E-Mails problemlos. Dafür brauchen Sie mindestens zwei Tabellen: eine für E-Mails und eine für deren Anhänge, sofern Sie diese speichern wollen.

Jede SQL-Datenbank-Engine sollte das hinkriegen, solange Ihre Mengen und Ihr Load auf einen einzelnen Server passen. Zu den populärsten relationalen Datenbanken zählen aktuell:

  • MySQL sowie sein empfohlener, aber inoffizieller Fork MariaDB sind "Klassiker" unter den Datenbank-Servern. Seit Oracle MySQL gekauft hat, hinkt allerdings die Unterstützung etwas hinterher. Überraschung.
  • Postgresql ist eine größere, funktionsreiche Engine mit mehr Skalierungsoptionen und komplexerer Einrichtung als MySQL.
  • Neben diesen freien, quelloffenen Datenbanken gibt es natürlich Oracle, mit einer Vielzahl an Funktionen für die Anforderungen großer Unternehmen. Sehr groß, komplex und teuer. Braucht Ihre einfache E-Mail-Speicherlösung wirklich so viel Skalierung?
  • Ebenfalls kommerziell: Microsoft SQL Server hat sich in den letzten Jahren stark verbessert und ist inzwischen ein ernster Konkurrent für Oracle.

So weit, so gut. Wenn Sie den Inhalt Ihrer E-Mails einfach so, wie er ist, in die Datenbank Ihrer Anwendung schreiben wollten, sind Sie im Grunde fertig.

Aber warum hier aufhören? Sie haben jetzt viele interessante Informationen zur Verfügung. Datensätze aus E-Mails sind wertvoll, weil sie das Kerngeschäft betreffen. Ihre E-Mails stecken wahrscheinlich voller Rechnungen, Reisekosten, Kostenvoranschläge, Interessenten und Kunden.

Wie wäre es, noch einen Schritt weiter zu gehen und gezielt relevante Daten aus den E-Mails zu extrahieren? Durch die Verfeinerung Ihrer Daten können Sie Ihre Geschäftsabläufe automatisieren und viel Zeit sparen.

4. Relevanten Text aus jeder E-Mail extrahieren

Hier findet das eigentliche Parsing statt. Idealerweise wollen wir Folgendes erreichen:

Eine Bildschirmaufnahme der E-Mail-Parser-Übersicht
Schema eines E-Mail-Parsers, der eine empfangene E-Mail in strukturierte Daten (z. B. eine Tabellenkalkulation oder eine Datenbank) umwandelt

Hier einige Ansätze, um dieses große Problem zu lösen:

Statistische Wortanalyse oder "Wortzählung"

Die statistische Analyse ist gut geeignet für E-Mails ohne festes Format, typischerweise solche, die von Menschen geschrieben wurden. Sie können beliebige Kategorien für Ihre E-Mails anlegen, mit jeweils passenden Wörtern, die in diesen Kategorien vorkommen. Dann parsen Sie jede E-Mail, zählen die Wörter aus jeder Kategorie und entscheiden, ob die E-Mail zu einer (oder mehreren) Kategorien passt.

Das funktioniert zum Beispiel für Sentiment-Analysen gut. Sie könnten beispielsweise eine "glücklicher Kunde"- und eine "wütender Kunde"-Kategorie anlegen und alle E-Mails zufriedener Kunden an Ihren Chef weiterleiten, während Sie die E-Mails wütender Kunden im Papierkorb landen lassen. Nur ein Scherz – Sie wissen, was gemeint ist.

Aber wie Sie vielleicht wissen, ist menschliche Kommunikation fehleranfällig, mehrdeutig und sehr kontextabhängig. Und solange wir keine echte künstliche Intelligenz haben, werden diese Mehrdeutigkeiten nicht aufgelöst. Dadurch kann Ihr System bestenfalls unzuverlässig, schlimmstenfalls nutzlos werden.

Reguläre Ausdrücke

Dieser Ansatz funktioniert am besten bei automatisch generierten E-Mails, bei denen der Großteil des Textes zwischen den Mails gleich bleibt.

Angenommen, Sie möchten eine Million Buchungs-E-Mails von American Airlines parsen und dabei den Passagiernamen extrahieren. Sie könnten einen regulären Ausdruck schreiben, der die ganze E-Mail matched und nur den Passagiernamen extrahiert. Klingt einfach, oder? Aber was, wenn sich andere Teile der E-Mail auch mal ändern? Oder was ist, wenn statt nur eines Passagiers diesmal drei im Text stehen? Ups.

Python bietet eine schöne Bibliothek für reguläre Ausdrücke. Reguläre Ausdrücke, kurz Regexp, sind als Regexp-Modul Teil von Ruby Core. Sie sind auch in JavaScript eine Standardfunktion.

Der Nachteil: Reguläre Ausdrücke sind schwer zu warten, und ihre Lesbarkeit ist – gelinde gesagt – ausbaufähig. Viele Parseur-Kunden haben uns berichtet, dass sie ursprünglich ihre eigene Parsing-Engine mit Regexps entwickelt haben, aber mit dem ständigen Wandel der eingehenden E-Mails nicht mehr mithalten konnten.

5. Eine verwaltete Lösung? Parseur kann helfen!

Wäre es nicht schön, einfach nur die gewünschten Daten, sauber aufgeteilt auf die passenden Spalten eines Excel-Blatts oder in einer Datenbank sortiert, zu bekommen?

Das ist unser Ziel bei Parseur. Wir bieten Ihnen eine einfache "Point-and-Click"-Oberfläche, mit der Sie einmalig festlegen, welche Daten für Sie relevant sind. Ähnliche E-Mails können Sie dann einfach schicken – die Daten werden extrahiert und automatisch in einer Excel-Tabelle platziert.

Sie müssen keinen eigenen E-Mail-Parser von Grund auf selbst entwickeln. Nach einer kurzen Point-and-Click-Session ist keine Nacharbeit mehr nötig. Jede E-Mail wird selbstständig zur Excel-Zeile.

6. Integration in Ihre Unternehmenssoftware

Sind Ihre extrahierten Daten ordentlich in Ihrer Excel-Tabelle gespeichert, müssen Sie sie "nur" noch an den richtigen Ort bringen, nämlich in Ihre Geschäftsanwendung.

Tools wie Zapier oder Make können hier äußerst hilfreich sein, denn Sie können damit Ihre E-Mail-Anwendung mit Ihrer Business-Software verbinden. Sie müssen nur einen Konnektor für diese Dienste schreiben und profitieren anschließend von den vielen anderen Verbindungen in deren Ökosystem.

Parseur lässt sich mit Google Sheets, Zapier, Integromat und Microsoft Power Automate integrieren und öffnet so Ihre geparsten Daten mit nur wenigen Klicks für tausende Anwendungen.

Viel Erfolg!

Zuletzt aktualisiert am

KI-basierte Datenextraktionssoftware.
Nutzen Sie Parseur noch heute.

Automatisieren Sie die Textextraktion aus E-Mails, PDFs und Tabellen.
Sparen Sie Hunderte von Stunden manueller Arbeit.
Nutzen Sie die Arbeitsautomatisierung mit KI.

Parseur rated 5/5 on Capterra
Parseur.com has the highest adoption on G2
Parseur rated 5/5 on GetApp
Parseur rated 4.5/5 on Trustpilot