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 sein als nur ein paar Skripte und etwas Ellbogenschmalz. Hier sind sechs Schritte, um einen E-Mail-Parser zu erstellen und Ihren Workflow für die E-Mail-Dateneingabe erfolgreich zu automatisieren.
Bevor wir beginnen: Definition von "Parse" und "Parsing"
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. Im Idealfall 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ämter Eigenlob: Kennen Sie Parseur?
Das Erstellen eines eigenen E-Mail-Parsers ist ein unterhaltsames Projekt, um zu verstehen, wie die Dinge unter der Haube funktionieren.
Aber es ist zeitaufwendig.
Parseur wurde Ende 2015 von Grund auf neu erstellt und es dauerte etwa 5.000 Mannstunden über sechs Jahre, nur um das Backend zu erstellen. Auch das Frontend (die gesamte Benutzeroberfläche, einschließlich des Template-Editors) hat Tausende von Mannstunden in Anspruch genommen. Das Team hinter Parseur besteht aus erfahrenen Entwicklern mit mehr als 20 Jahren professioneller Programmiererfahrung.
Wir sind noch nicht fertig und können nicht einmal abschätzen, wie lange es dauern würde, einen "ausreichend guten" Textparser zu erstellen.
Wenn Sie schnell Ergebnisse benötigen, sollten Sie Parseur ausprobieren. Parseur ist ein verwalteter und benutzerfreundlicher E-Mail-Parser, mit dem Sie Stunden bei der Einrichtung Ihrer eigenen Lösung sparen. Sehen Sie sich die umfangreichen Parseur-Funktionen an.
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 Open-Source 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 altmodischere POP3 oder IMAP. Heutzutage können Sie Microsoft sogar dazu bringen, ihn für Sie zu hosten, gegen eine Gebühr.
- Erstellen Sie Ihren eigenen. Dieser Weg wird lang und kurvenreich sein, 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 nettes 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 der Einrichtung eines eigenen E-Mail-Servers abnimmt. In unserer Zeit der Cloud und von SaaS ist es bequemer, einen gehosteten E-Mail-Dienst zu nutzen, der Ihnen die schmutzige E-Mail-Arbeit abnimmt. Hier sind die wichtigsten Akteure in diesem Bereich:
- Postmark konzentriert sich auf Zustellbarkeit und Zuverlässigkeit. Außerdem hat er einen kostenlosen Tarif.
- Mandrill hatte einen 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 konzentriert sich mehr auf Entwickler und API. Außerdem hat er einen kostenlosen Tarif.
Wir bei Parseur lieben Postmark. Seine API ist großartig und die Dokumentation hervorragend. Es gibt viele SDKs für alle gängigeren Programmiersprachen.
2. E-Mails in ein geeignetes Datenformat übersetzen
E-Mail ist ein altes Format, so alt wie "vor Star Wars", und es hat im Laufe der Jahrzehnte ein paar Macken angesammelt. Die Handhabung internationaler (nicht-US-amerikanischer) Zeichen war beispielsweise nicht Teil der ursprünglichen Spezifikation. 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 im E-Mail-Header.
- 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) in einem Mail-Header-Abschnitt.
Wieder einmal können Dienste wie Postmark oder Mailgun Ihnen den Tag retten und die Übersetzung für Sie erledigen. Sie können Horrorgeschichten über UTF-8, MIME und cp1252 vergessen (noch nie etwas von UTF-8, MIME oder cp1252 gehört? Ich beneide Sie um Ihr Leben).
Wenn Sie beispielsweise Mailgun verwenden, empfangen die Server die E-Mail für Sie und wandeln sie in ein einfach zu handhabendes JSON-Dokument um, wobei sie sich um alle der Menschheit bekannten RFCs kümmern. Dieses wird dann per Webhook in einer einzigen HTTP POST-Anfrage an die von Ihnen gewünschte URL auf Ihrem eigenen Server gesendet.
Für die Neugierigen gibt es hier eine Liste aller SMTP-bezogenen RFCs. Gern geschehen.
Eine einfache E-Mail, die bei Mailgun eingeht, sieht auf Ihrem Server zum Beispiel so 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 dies mit einem traditionellen 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==
Glücklicherweise verfügen die meisten guten Programmiersprachen über Bibliotheken zur Entschlüsselung von E-Mails, wie z. B. das Modul email für Python oder die Bibliothek RubyMail für Ruby.
3. Die Daten in die Datenbank einlesen
Von hier an können Sie sich auf Ihre Programmierkenntnisse verlassen, um all diese HTTP-Anfragen zu verarbeiten und in übersichtliche Einträge in der Datenbank Ihrer Wahl umzuwandeln.
Hier sind einige beliebte Programmiersprachen und Frameworks, die Ihnen bei dieser Aufgabe helfen, sortiert nach zunehmender Trendigkeit:
- PHP Symfony oder Zend
- Django, Tornado oder Flask für Python
- Ruby auf Rails
- Und viele, viele andere...
Der beteiligte Code sollte trivial sein, wenn Sie kein bestimmtes Format anstreben. Sie müssen jedoch möglicherweise das Format herausfinden, das Ihre Unternehmenssoftware akzeptiert, und in dieses Format konvertieren. Beliebte Austauschformate sind CSV und JSON, aber einige Geschäftsanwendungen verwenden obskurere, binäre Formate.
Wenn Sie lediglich Speicherplatz benötigen (möglicherweise für Ihre eigene benutzerdefinierte Geschäftsanwendung), müssen Sie sich nur noch entscheiden, wie Sie die Daten speichern möchten.
Wenn Sie wissen, dass Sie nie Statistiken oder nicht sequenzielle Operationen mit diesen gespeicherten E-Mails durchführen müssen, können Sie beispielsweise MongoDB verwenden. Ich rate jedoch davon ab, mit Argumenten aus diesem großartigen Blogbeitrag.
Jedes relationale Datenbankmanagementsystem, das auf SQL basiert, speichert Ihre E-Mails problemlos. Sie müssen mindestens zwei Tabellen definieren: eine für E-Mails und eine weitere für deren Anhänge, falls Sie diese speichern möchten.
Jede SQL-Datenbank-Engine sollte dies bewältigen, solange Ihr Volumen und Ihre Last auf einen Server passen. Heutzutage gibt es einige beliebte Optionen für relationale Datenbanken:
- MySQL und sein empfohlener, aber inoffizieller Fork MariaDB sind einfache und nach wie vor beliebte Datenbank-Server. Beachten Sie, dass der Support seit der Übernahme von MySQL durch Oracle nicht mehr so stark ist wie früher. Überraschung.
- Postgresql ist eine größere, funktionsreiche Datenbank-Engine mit mehr Skalierungsmöglichkeiten und einer komplexeren Einrichtung als MySQL.
- Neben diesen kostenlosen Open-Source-Datenbanken gibt es natürlich noch Oracle mit einer Vielzahl von Funktionen, die den Anforderungen großer Unternehmen gerecht werden. Sehr groß, komplex und teuer. Sind Sie sicher, dass Ihre einfache E-Mail-Speicherlösung so viel Skalierbarkeit benötigt?
- Ebenfalls im kommerziellen Bereich hat sich Microsoft SQL Server in den letzten Jahren stark verbessert und ist nun ein ernstzunehmender Konkurrent zu Oracle.
Hier sind wir also. Wenn Sie den Inhalt Ihrer E-Mails unverändert in die Datenbank Ihrer Anwendung einfügen wollten, sind Sie im Grunde genommen fertig.
Aber warum hier aufhören? Sie haben jetzt viele interessante Daten zur Hand. Dieser Datensatz ist sehr interessant, weil er für Ihr Kerngeschäft relevant ist. Ihre E-Mails sind wahrscheinlich voll von Rechnungen, Reisekosten, Kostenvoranschlägen, Interessenten und Kunden.
Wie wäre es, wenn Sie noch einen Schritt weiter gehen und relevante Daten aus diesen E-Mails extrahieren? Die Verfeinerung Ihrer Daten kann Ihnen helfen, Ihren Geschäftsworkflow zu automatisieren und Ihnen und Ihren Mitarbeitern Zeit zu sparen.
4. Relevanter Text aus jeder E-Mail extrahieren
Hier findet das eigentliche Parsing statt. Im Idealfall wollen wir Folgendes erreichen:

Hier sind einige Ansätze zur Lösung dieses großen Problems:
Statistische Wortanalyse oder "Wortzählung"
Die statistische Analyse ist gut für E-Mails ohne vordefiniertes Format geeignet, typischerweise E-Mails, die von einem Menschen geschrieben wurden. Sie könnten mehrere E-Mail-Kategorien mit einer Reihe von Wörtern definieren, die zu jeder dieser Kategorien gehören. Anschließend würden Sie jede E-Mail parsen, die Wörter aus jeder Kategorie zählen und dann entscheiden, ob die E-Mail in eine oder mehrere dieser Kategorien fällt.
Dies funktioniert ziemlich gut für die Stimmungsanalyse. Sie könnten beispielsweise eine Kategorie "zufriedener Kunde" und eine Kategorie "wütender Kunde" definieren und die E-Mails zufriedener Kunden an Ihren Chef und die E-Mails wütender Kunden in den Papierkorb senden. Nur ein Scherz, aber Sie verstehen die Idee.
Wie Sie jedoch vielleicht wissen, ist die Kommunikation von Mensch zu Mensch fehleranfällig, mehrdeutig und sehr kontextabhängig. Und solange wir keine echte künstliche Intelligenz haben, werden diese Mehrdeutigkeiten nicht aufgelöst werden. Sie können Ihr System bestenfalls unzuverlässig und schlimmstenfalls nutzlos machen.
Reguläre Ausdrücke
Dieser Ansatz eignet sich am besten für automatisch generierte E-Mails, bei denen der größte Teil des Textes zwischen den E-Mails gleich bleibt.
Angenommen, Sie möchten eine Million Buchungs-E-Mails von American Airlines parsen und aus jeder den Namen des Passagiers extrahieren. Dies könnte durch Erstellen eines regulären Ausdrucks erfolgen, der mit der gesamten E-Mail übereinstimmt und nur den Namen des Passagiers erfasst. Klingt einfach, oder? Was passiert aber, wenn sich auch andere Teile der E-Mail ändern? Und was ist, wenn auf diesem einen Flug drei Passagiere statt nur einem reisen? Ups.
Python verfügt über 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 integriert.
Der Nachteil ist, dass reguläre Ausdrücke komplex zu pflegen sind und ihre Lesbarkeit bestenfalls passabel ist. Viele Parseur-Kunden berichteten uns, dass sie ursprünglich ihre eigene Parsing-Engine mit Regexps entwickelt, diese aber nicht gegen den Strom der sich ständig ändernden E-Mails pflegen konnten.
5. Eine verwaltete Lösung? Parseur kann helfen!
Wäre es nicht schön, die gewünschten Daten einfach sortiert in den richtigen Spalten einer Excel-Tabelle oder Datenbank zu erhalten?
Nun, das ist unser Ziel hier bei Parseur. Wir bieten Ihnen eine einfache "Point-and-Click"-Oberfläche, mit der Sie ein für alle Mal definieren können, welche Daten für Sie relevant sind. Sie können dann ähnliche E-Mails senden, deren Daten extrahiert und automatisch in eine Excel-Tabelle eingefügt werden.
Sie müssen keinen eigenen E-Mail-Parser erstellen. Nach dieser ersten kurzen Point-and-Click-Sitzung müssen Sie keine manuelle Bearbeitung mehr durchführen. Jede E-Mail wird zu einer eigenen Excel-Zeile.
6. In Ihre Unternehmenssoftware integrieren
Sobald Ihre extrahierten Daten ordentlich in Ihrer Excel-Tabelle vorliegen, müssen Sie sie "nur noch" dorthin bringen, wo sie hingehören: in Ihre Geschäftsanwendung.
Tools wie Zapier oder Make können Ihnen hier enorm helfen, da sie Ihre E-Mail-Anwendung mit Ihrer Geschäftsanwendung verbinden können. Sie müssen lediglich einen Konnektor für diese Dienste schreiben. Anschließend können Sie die vielen anderen Konnektoren nutzen, die Teil ihres Ökosystems sind.
Parseur lässt sich in Google Tabellen, Zapier, Integromat und Microsoft Power Automate integrieren, sodass Ihre geparsten Daten mit nur wenigen Klicks für Tausende von Anwendungen verfügbar sind.
Viel Glück!
Zuletzt aktualisiert am