Product

Utiliser les expressions régulières pour filtrer les emails entrants

Bien que vous connaissiez probablement déjà les expressions régulières dans le cadre du développement de votre application, lisez la suite pour découvrir comment les utiliser avec Mailgun afin de filtrer les emails entrants. Découvrez également la syntaxe et des cas d'utilisation courants des expressions régulières avec notre fonctionnalité de routage.
Image pour Utiliser les expressions régulières pour filtrer les emails entrants

Les expressions régulières constituent un moyen puissant de filtrer et de faire correspondre des données, mais la syntaxe varie en fonction de votre langage de script et de votre cas d’utilisation. Par exemple, une expression régulière conforme aux spécifications Javascript diffère de celle de Java ou Python. Ces mêmes difficultés s’appliquent à l’utilisation des expressions régulières pour les emails.

Bien que vous connaissiez probablement déjà les expressions régulières dans le développement de votre application, suivez un cours accéléré sur leur utilisation avec Mailgun pour filtrer les emails entrants. Nous examinerons également la syntaxe et des cas d’utilisation courants des expressions régulières avec notre fonctionnalité de routage.

Que sont les expressions régulières ?

Pour être sûrs de partir sur de bonnes bases, voici un petit rappel sur les expressions régulières (regex ou regexp). Une regex est une séquence de caractères qui spécifie un modèle de recherche dans un texte. Vous pouvez utiliser des regex avec des algorithmes de recherche de chaînes pour trouver des correspondances dans une base de données, un texte ou du code HTML. Les cas d’utilisation avancés incluent les variantes gourmandes (trouver toutes les correspondances) ou non gourmandes (trouver la première correspondance et s’arrêter).

Les regex d’email sont utiles pour filtrer les adresses email non valides lors de la validation des adresses email, détecter les erreurs et filtrer les emails entrants.

Comment utiliser les regex avec Mailgun ?

L’email marketing est une conversation, et Mailgun a pour mission d’envoyer des emails. Mais attendez, si c’est censé être une conversation, n’avez-vous pas aussi besoin d’un moyen de gérer les emails entrants ?

Excellente question ! Notre API Routes vous permet d’accepter, d’analyser, et de transférer ou d’effectuer une requête POST sur vos emails entrants. Nous avons récemment amélioré la fonctionnalité Routes pour la rendre encore plus utile en ajoutant la possibilité de tester les points de terminaison de vos webhooks lorsque vous souhaitez effectuer une requête POST de vos emails entrants vers votre application. Cependant, rien de tout cela n’a d’importance si vous ne parvenez pas à filtrer efficacement les emails entrants.

Ci-dessous, examinons quelques exemples des méthodes les plus courantes pour regrouper les emails entrants en vue de leur traitement. Ces méthodes utilisent des expressions régulières, qui sont extrêmement puissantes, mais qui peuvent également s’avérer difficiles à manipuler.

Quelle est la variante de regex utilisée par Mailgun ?

La notation des regex pour la fonctionnalité Routes est basée sur les spécifications Python. Avant de plonger dans des exemples spécifiques, nous tenons à signaler une erreur courante pour l’équipe de développement qui découvre les expressions régulières :

  • L’astérisque (*) en soi n’est pas un joker dans la syntaxe des expressions régulières.
  • Pour correspondre à n’importe quel caractère, vous devez utiliser un point (.).
  • Pour correspondre à n’importe quelle série de caractères, vous devez utiliser un point suivi d’un astérisque (.*).

Sans plus attendre, plongeons dans le vif du sujet.

Quels sont quelques exemples d’utilisation des regex avec Mailgun ?

Voici quelques-unes des expressions régulières les plus courantes que nous voyons notre clientèle utiliser lors de la réception de messages. Cette liste n’effleure que la surface de ce que vous pouvez faire, mais nous espérons qu’elle vous donnera un aperçu de la puissance des expressions régulières.

Pour simplifier les choses, nous avons classé les expressions en trois groupes :

  1. Faire correspondre les variantes du destinataire de l’email.
  2. Faire correspondre les en-têtes d’emails.
  3. Enchaîner des expressions régulières pour faire correspondre plusieurs attributs.

Explorons quelques exemples dans les trois sections ci-dessous.

1. Comment faire correspondre le nom d’un destinataire d’email à l’aide d’une regex ?

Dans cette section, nous examinerons quelques variantes sur la façon dont vous pouvez faire correspondre le nom d’un destinataire d’email à l’aide d’une regex.

Comment faire correspondre un destinataire, quel que soit le nom de domaine de son adresse email ?

Commençons par un exemple un peu moins restrictif. Dans cette regex simple, nous voulons trouver un destinataire spécifique dans n’importe quel nom de domaine actuellement chargé dans l’onglet Domaines de Mailgun. Découvrez l’exemple de code ci-dessous :

                                

                                    match_recipient('^chris@(.*)
                                
                            

N’oubliez pas que vous devez faire pointer vos enregistrements MX vers Mailgun avant que Mailgun n’accepte les messages pour ce domaine particulier.

Comment faire correspondre un destinataire spécifique dont l’adresse email appartient à un domaine spécifique ?

Ensuite, nous allons aller un peu plus loin. Nous voulons toujours trouver un destinataire spécifique. Cependant, cette fois-ci, nous voulons trouver un destinataire spécifique sur un domaine spécifique, « Gmail.com ».

                                

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

Mailgun configure notre serveur d’emails entrants pour accepter les destinataires utilisant l’adressage plus (plus addressing). Vous pouvez également limiter les adresses plus en utilisant la syntaxe de l’exemple suivant.

Comment faire correspondre plusieurs destinataires sur un domaine spécifique ?

Trouvons plus d’un destinataire spécifique ayant des adresses email dans un domaine spécifique. Découvrez la regex ci-dessous.

                                

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

Comment faire correspondre n’importe quel destinataire sur un domaine spécifique ?

Dans ce cas, nous voulons trouver tous les destinataires d’emails ayant des adresses email valides sur un domaine de premier niveau spécifique. Il s’agit en quelque sorte d’un « catch-all » pour un domaine particulier. Attention, cela ne doit pas être confondu avec le catch-all global que la fonctionnalité Routes de Mailgun fournit, où tous les emails reçus sont transférés.

                                

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

Comment utiliser une capture nommée pour transférer un message à un destinataire externe ?

Dans ce cas d’utilisation, nous voulons que Mailgun reçoive et transfère un message entrant vers un domaine externe. Cependant, nous souhaitons également conserver l’utilisateur dans notre mappage d’utilisateurs.

Pour ce faire, nous utilisons une capture nommée, qui mémorisera « l’utilisateur » et l’utilisera dans l’action de transfert. Découvrez la regex ci-dessous.

                                

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

2. Comment faire correspondre des en-têtes spécifiques d’un email avec des regex ?

Ici, nous examinerons des variantes sur la façon de faire correspondre des en-têtes spécifiques à partir d’un email entrant en utilisant des expressions régulières.

Comment faire correspondre un attribut « from » défini ?

Commençons par quelque chose de simple. Nous voulons que le routage se déclenche pour tout email provenant de « bob@example.com ». Remarquez que nous ajoutons des jokers (*) avant et après l’adresse email. En effet, le champ « From » peut contenir plusieurs autres attributs. Par exemple, le nom de l’expéditeur : « Mailgun Bob  ».

                                

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

Comment faire correspondre plusieurs mots-clés définis dans l’objet d’email ?

Si l’email est une question de conversations, répondre rapidement aux demandes urgentes est un excellent moyen de satisfaire vos utilisateurs. Dans ce cas, nous recherchons tout message avec un objet contenant soit « urgent », « help » OU « asap ». Nous ferons correspondre ces chaînes en majuscules comme en minuscules.

Les jokers placés au début et à la fin capturent les objets d’emails contenant nos mots-clés, quel que soit le reste du texte dans l’objet. Par exemple, ce modèle se déclencherait pour un objet tel que : « Ma demande est urgente ! »

                                

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

Comment collecter et rediriger les messages de spam entrants vers une messagerie externe ?

Mailgun fournit un filtre anti-spam pour les messages entrants. Lorsque nous déterminons qu’un message est un spam, nous injectons un en-tête spécial. Vous pouvez utiliser la fonctionnalité Routes pour filtrer les messages en fonction de ces en-têtes.

Ici, nous transférons le message vers une messagerie externe afin de pouvoir l’examiner plus tard. Découvrez la regex ci-dessous.

                                

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

3. Comment enchaîner des regex pour faire correspondre plusieurs attributs ?

Mettons tout cela en pratique. Dans cette section, nous établirons des correspondances en fonction de plusieurs attributs.

Comment faire correspondre tout destinataire dont le message est une réponse ?

Dans l’exemple ci-dessous, nous voulons faire correspondre tout destinataire dont l’adresse email appartient à un domaine spécifique. Cependant, nous ne voulons router les messages que lorsqu’il s’agit d’une réponse à notre fil de discussion initial. Vous pouvez également utiliser « Fw » pour représenter un message transféré.

                                

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

Comment faire correspondre tout destinataire, mais seulement si le message est en anglais ?

Dans la regex ci-dessous, nous avons créé un « catch-all » pour tous les destinataires d’un domaine spécifique. Cependant, nous ne routons les messages que lorsque la langue du contenu est l’anglais. Découvrez comment procéder en vous basant sur la spécification ISO pour les langues de contenu.

                                

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

Plus de contenus de Mailgun

Notre fonctionnalité de routage alimente vos envois, mais vous aide également à gérer vos conversations par email entrantes. Ce tutoriel vous a-t-il aidé à rédiger des expressions régulières plus efficaces pour le filtrage de vos emails entrants ? Inscrivez-vous à notre newsletter pour ne manquer aucun autre contenu utile comme celui-ci.

Tenez-moi au courant ! Recevez d’excellentes ressources dans votre boîte de réception chaque semaine.
Envoyez-moi la newsletter Mailjet. J’accepte expressément de recevoir la newsletter et je sais que je peux facilement me désabonner à tout moment.

Découvrez la newsletter de Mailjet chaque mois dans votre boîte de réception.