Product

Eingehende E-Mails mit regulären Ausdrücken filtern

Auch wenn Sie wahrscheinlich schon durch Ihre App-Entwicklung mit regulären Ausdrücken vertraut sind, erfahren Sie hier, wie Sie diese mit Mailgun nutzen, um eingehende E-Mails zu filtern. Werfen Sie außerdem einen Blick auf die Syntax und gängige Anwendungsfälle für die Verwendung regulärer Ausdrücke mit unserer Routing-Funktion.
Bild für Eingehende E-Mails mit regulären Ausdrücken filtern

Reguläre Ausdrücke sind eine leistungsstarke Möglichkeit, Daten zu filtern und abzugleichen, aber die Syntax ändert sich je nach Skriptsprache und Anwendungsfall. So unterscheidet sich beispielsweise ein regulärer Ausdruck nach einer Javascript-Spezifikation von einem nach Java oder Python. Die gleichen Hürden gelten auch für die Verwendung regulärer Ausdrücke bei E-Mails.

Auch wenn Sie wahrscheinlich schon durch Ihre App-Entwicklung mit regulären Ausdrücken vertraut sind, machen Sie einen Crashkurs über deren Verwendung mit Mailgun, um eingehende E-Mails zu filtern. Außerdem werfen wir einen Blick auf die Syntax und gängige Anwendungsfälle für die Verwendung regulärer Ausdrücke mit unserer Routing-Funktion.

Was sind reguläre Ausdrücke?

Um auf Nummer sicher zu gehen, hier eine kurze Auffrischung zu regulären Ausdrücken (Regex oder Regexp). Regex ist eine Zeichenfolge, die ein Suchmuster im Text angibt. Verwenden Sie Regex mit Algorithmen zur Zeichenfolgensuche, um Übereinstimmungen in einer Datenbank, in Text oder in HTML-Code zu finden. Fortgeschrittene Anwendungsfälle umfassen „Greedy“-Variationen (alle Übereinstimmungen finden) oder „Non-Greedy“-Variationen (die erste Übereinstimmung finden und stoppen).

E-Mail-Regex ist nützlich für die Filterung ungültiger E-Mail-Adressen während der E-Mail-Adress-Validierung, die Erkennung von Fehlern und die Filterung eingehender E-Mails.

Wie nutze ich Regex mit Mailgun?

E-Mail-Marketing ist eine Konversation, und Mailgun ist auf den Versand von E-Mails spezialisiert. Aber Moment mal, wenn es eine Konversation sein soll, brauchen Sie dann nicht auch eine Möglichkeit, eingehende E-Mails zu bearbeiten?

Gut, dass Sie fragen! Unser Routing-API ermöglicht es Ihnen, Ihre eingehenden E-Mails zu akzeptieren, zu parsen und zu POSTen oder weiterzuleiten. Wir haben in letzter Zeit einiges getan, um das Routing noch nützlicher zu machen, indem wir die Möglichkeit hinzugefügt haben, Ihre Webhook-Endpunkte zu testen , wenn Sie Ihre eingehenden E-Mails an Ihre App POSTen möchten. Allerdings spielt das alles keine Rolle, wenn Sie eingehende E-Mails nicht effektiv filtern können.

Im Folgenden gehen wir einige Beispiele für die gängigsten Methoden durch, eingehende E-Mails zur Verarbeitung zu gruppieren. Diese Methoden verwenden reguläre Ausdrücke, die extrem leistungsstark sind, aber auch kompliziert in der Handhabung sein können.

Welche Regex-Variante nutzt Mailgun?

Die Regex-Notation für das Routing basiert auf der Python-Spezifikation. Bevor wir uns speziellen Beispielen widmen, möchten wir auf einen häufigen Fehler hinweisen, der oft von Personen gemacht wird, die neu im Umgang mit regulären Ausdrücken sind:

  • Das Sternchen (*) selbst ist kein Platzhalter in der Syntax regulärer Ausdrücke.
  • Um ein beliebiges Zeichen abzugleichen, müssen Sie einen Punkt (.) verwenden.
  • Um eine beliebige Zeichenfolge abzugleichen, verwenden Sie einen Punkt gefolgt von einem Sternchen (.*).

Legen wir ohne weitere Umschweife los.

Was sind einige Beispiele für die Verwendung von Regex mit Mailgun?

Hier sind einige der häufigsten regulären Ausdrücke, die unsere Kundschaft beim Empfang von Nachrichten verwendet. Diese Liste kratzt nur an der Oberfläche dessen, was möglich ist, aber hoffentlich regt sie Sie dazu an, über die Leistungsfähigkeit regulärer Ausdrücke nachzudenken.

Um es einfacher zu machen, haben wir die Ausdrücke in drei Gruppen unterteilt:

  1. Abgleich von Variationen des E-Mail-Empfängers.
  2. Abgleich von E-Mail-Kopfzeilen.
  3. Verkettung regulärer Ausdrücke zum Abgleich mehrerer Attribute.

Sehen wir uns in den drei folgenden Abschnitten einige Beispiele dafür an.

1. Wie gleiche ich den Namen eines E-Mail-Empfängers mit Regex ab?

In diesem Abschnitt gehen wir einige Variationen durch, wie Sie den Namen eines E-Mail-Empfängers mithilfe von Regex abgleichen können.

Wie kann ich einen Empfänger abgleichen, unabhängig vom Domain-Namen seiner E-Mail-Adresse?

Beginnen wir mit einem nicht ganz so stark eingeschränkten Beispiel. In dieser einfachen Regex möchten wir einen bestimmten Empfänger in einem der Domain-Namen finden, die derzeit im Mailgun-Tab Domains geladen sind. Sehen Sie sich den folgenden Beispielcode an:

                                

                                    match_recipient('^chris@(.*)
                                
                            

Denken Sie daran, dass Ihre MX-Einträge auf Mailgun verweisen müssen, bevor Mailgun Nachrichten für diese spezielle Domain akzeptiert.

Wie kann ich einen bestimmten Empfänger abgleichen, dessen E-Mail-Adresse eine bestimmte Domain ist?

Als Nächstes gehen wir einen Schritt weiter. Wir möchten immer noch einen bestimmten Empfänger finden. Dieses Mal möchten wir jedoch einen bestimmten Empfänger bei einer bestimmten Domain finden, „Gmail.com“.

                                

                                    match_recipient("^chris+(.*)@gmail.com$")
                                
                            

Mailgun konfiguriert unseren eingehenden E-Mail-Server so, dass Empfänger mit Plus-Adressierung akzeptiert werden. Sie können die Plus-Adressen auch einschränken, indem Sie die Syntax aus dem nächsten Beispiel verwenden.

Wie kann ich mehrere Empfänger bei einer bestimmten Domain abgleichen?

Suchen wir nach mehr als einem bestimmten Empfänger mit E-Mail-Adressen in einer bestimmten Domain. Sehen Sie sich die Regex unten an.

                                

                                    match_recipient('^(chris|blog|test)@example.com
                                
                            

Wie kann ich einen beliebigen Empfänger bei einer bestimmten Domain abgleichen?

In diesem Fall möchten wir alle E-Mail-Empfänger mit gültigen E-Mail-Adressen bei einer bestimmten Top-Level-Domain finden. Dies ist eine Art „Catch-all“ für eine bestimmte Domain. Zur Warnung: Dies sollte nicht mit dem globalen Catch-all verwechselt werden, das das Mailgun-Routing bietet und bei dem alle empfangenen E-Mails weitergeleitet werden.

                                

                                    match_recipient('^(.*)@example.com
                                
                            

Wie kann ich ein Named Capture verwenden, um eine Nachricht an einen externen Empfänger weiterzuleiten?

In diesem Anwendungsfall möchten wir, dass Mailgun eine eingehende Nachricht empfängt und an eine externe Domain weiterleitet. Allerdings möchten wir auch die Nutzenden in unserem User-Mapping behalten.

Dazu verwenden wir ein Named Capture, das sich den „User“ merkt und ihn in der Weiterleitungsaktion verwendet. Sehen Sie sich die Regex unten an.

                                

                                    match_recipient('(?P.*?)@example.com') -> forward('g@externaldomain.com')
                                
                            

2. Wie kann ich bestimmte Kopfzeilen einer E-Mail mit Regex abgleichen?

Hier gehen wir Varianten zum Abgleich bestimmter Kopfzeilen einer eingehenden E-Mail mithilfe regulärer Ausdrücke durch.

Wie kann ich ein definiertes „From“-Attribut abgleichen?

Beginnen wir mit etwas Einfachem. Wir möchten, dass das Routing für jede E-Mail ausgelöst wird, die von „bob@example.com“ stammt. Beachten Sie, dass wir vor und nach der E-Mail-Adresse Platzhalter (*) hinzufügen. Das liegt daran, dass ein „From“-Feld verschiedene andere Attribute enthalten kann. Zum Beispiel den Namen des Absenders: „Mailgun Bob .“

                                

                                    match_header('from', '(.*)bob@example.com(.*)')
                                
                            

Wie kann ich mehrere definierte Keywords in der Betreffzeile abgleichen?

Wenn es bei E-Mails um Konversationen geht, sind zeitnahe Antworten auf dringende Anfragen eine großartige Möglichkeit, Ihre Nutzenden zufrieden zu stellen. In diesem Fall suchen wir nach Nachrichten mit einem Betreff, der entweder „urgent“ ODER „help“ ODER „asap“ enthält. Wir gleichen diese Zeichenfolgen sowohl in Groß- als auch in Kleinschreibung ab.

Die Platzhalter am Anfang und am Ende erfassen Betreffzeilen, die unsere Keywords unabhängig vom restlichen Text im Betreff enthalten. Dieses Beispiel würde beispielsweise bei einem Betreff wie „My request is urgent!“ den Trigger auslösen.

                                

                                    match_header('subject', '(.*)(urgent|help|asap)(.*)')
                                
                            

Wie kann ich eingehende Spam-Nachrichten sammeln und an ein externes Postfach umleiten?

Mailgun bietet Spamfilter für eingehende Nachrichten. Wenn wir feststellen, dass eine Nachricht Spam ist, fügen wir eine spezielle Kopfzeile ein. Sie können das Routing verwenden, um Nachrichten basierend auf diesen Kopfzeilen zu filtern.

Hier leiten wir die Nachricht an ein externes Postfach weiter, damit wir sie später überprüfen können. Sehen Sie sich die Regex unten an.

                                

                                    match_header('X-Mailgun-Sflag', 'Yes') -> forward('mbx@externaldomain.com')
                                
                            

3. Wie kann ich Regex verketten, um mehrere Attribute abzugleichen?

Fügen wir alles zusammen. In diesem Abschnitt gleichen wir basierend auf mehreren Attributen ab.

Wie kann ich einen beliebigen Empfänger abgleichen, dessen Nachricht eine Antwort ist?

Im folgenden Beispiel möchten wir einen beliebigen Empfänger abgleichen, dessen E-Mail-Adresse eine bestimmte Domain ist. Wir möchten Nachrichten jedoch nur routen, wenn es sich um eine Antwort auf unseren ursprünglichen Thread handelt. Sie können auch „Fw“ verwenden, um eine weitergeleitete Nachricht darzustellen.

                                

                                    match_recipient('^(.*)@example.com
                                
                            

Wie kann ich jeden Empfänger abgleichen – aber nur, wenn die Nachricht auf Englisch ist?

In der Regex unten haben wir ein „Catch-all“ für alle Empfänger einer bestimmten Domain erstellt. Wir routen Nachrichten jedoch nur, wenn die Inhaltssprache Englisch ist. Erfahren Sie, wie das funktioniert, basierend auf der ISO-Spezifikation für Inhaltssprachen.

                                

                                    match_recipient('^(.*)@example.com
                                
                            

Mehr von Mailgun

Unsere Routing-Funktion unterstützt Ihren Versand, hilft Ihnen aber auch dabei, Ihre eingehenden E-Mail-Konversationen zu verwalten. Hat Ihnen dieses Tutorial geholfen, effektivere reguläre Ausdrücke zum Filtern Ihrer eingehenden E-Mails zu schreiben? Abonnieren Sie unseren Newsletter, damit Sie keine weiteren nützlichen Inhalte wie diesen verpassen.

Bleiben Sie informiert! Erhalten Sie jede Woche wertvolle Inhalte direkt in Ihr Posteingang.
Senden Sie mir den Mailjet-Newsletter. Ich bin mit dem Erhalt des Newsletters einverstanden und weiß, dass ich mich jederzeit unkompliziert wieder abmelden kann.

Prüfen Sie Ihren Posteingang jeden Monat auf Ihren Mailjet Newsletter!