Filtrage d'e‑mail IMAP – Méthodes, critères et exemples de code

Filtrage de messages basique

Le ImapClient classe fournit le ListMessages() méthode qui récupère tous les messages d’une boîte aux lettres. Pour obtenir uniquement les messages correspondant à une condition, utilisez le surchargé ListMessages() méthode qui prend MailQuery comme argument. Le MailQuery la classe fournit diverses propriétés pour spécifier les conditions, par exemple la date, l’objet, l’expéditeur, le destinataire, etc. Le premier exemple illustre comment filtrer les messages selon la date et l’objet. Nous montrons également comment filtrer selon d’autres critères et comment construire des requêtes plus complexes. L’API offre également la capacité d’appliquer des critères de recherche sensibles à la casse pour correspondre exactement aux critères de filtrage. L’API permet aussi de spécifier l’encodage de la chaîne de recherche pour filtrer les messages de la boîte aux lettres.

Filtrer les messages de la boîte aux lettres

  1. Se connecter et s’authentifier à un serveur IMAP
  2. Créez une instance de la MailQuery et définir les propriétés
  3. Appelez le ImapClient.ListMessages(MailQuery query) méthode et passer le MailQuery avec les paramètres pour obtenir uniquement les messages filtrés.

Le fragment de code suivant vous montre comment se connecter à une boîte aux lettres IMAP et obtenir les messages arrivés aujourd’hui et contenant le mot "newsletter" dans l’objet.

Filtrer les messages par critères spécifiques

Les exemples de code ci‑dessus filtre les messages en fonction de l’objet et de la date du e‑mail. Nous pouvons également utiliser d’autres propriétés pour définir d’autres conditions prises en charge. Voici quelques exemples de définition des conditions avec MailQuery. Les fragments de code qui suivent montrent comment filtrer les courriels sur :

  1. Date d’aujourd’hui.
  2. Une plage de dates.
  3. D’un expéditeur spécifique.
  4. D’un domaine spécifique.
  5. D’un destinataire spécifique.

Date d’aujourd’hui

Le fragment de code suivant vous montre comment filtrer les courriels à la date d’aujourd’hui.

Plage de dates

Le fragment de code suivant vous montre comment filtrer les e‑mails sur une plage de dates.

Expéditeur spécifique

Le fragment de code suivant vous montre comment filtrer les courriels en fonction d’un expéditeur spécifique.

Domaine spécifique

Le fragment de code suivant vous montre comment filtrer les courriels en fonction d’un domaine spécifique.

Destinataire spécifique

Le fragment de code suivant vous montre comment filtrer les courriels en fonction d’un destinataire spécifique.

Construction de requêtes avancées

Si différent MailQueryBuilder les propriétés sont définies dans des instructions séparées, puis toutes les conditions seraient satisfaites. Par exemple, si nous voulons obtenir les messages entre une plage de dates et d’un hôte spécifique, nous devons écrire trois instructions.

Combiner les requêtes avec AND

Le snippet de code suivant montre comment combiner des requêtes avec AND.

Combiner les requêtes avec OR

MailQueryBuilder fournit le Or() méthode qui prend deux MailQuery instances comme paramètres. Elle récupère les messages qui correspondent à l’une des deux conditions spécifiées. Le fragment de code suivant montre comment filtrer les messages qui ont soit « test » dans l’objet, soit « noreply@host.com » comme expéditeur. Le fragment de code suivant vous montre comment combiner des requêtes avec OR.

Filtrage basé sur InternalDate

Les messages peuvent être extraits du serveur en fonction de l’InternalDate, cependant parfois le serveur ne renvoie pas tous les messages visibles dans la boîte de réception. Cela peut être dû au fuseau horaire du serveur qui n’est pas toujours UTC, comme pour certains serveurs. Gmail. Aspose envoie des commandes comme 008 SEARCH ON 4-May-2014 selon le protocole IMAP toutefois le résultat peut différer en raison des réglages de fuseau horaire du serveur. Un nouveau membre est ajouté dans ImapMessageInfo comme InternalDate qui aide davantage à filtrer les messages. Le fragment de code suivant montre l’utilisation de InternalDate pour filtrer les messages.

Filtrage sensible à la casse

Le fragment de code suivant vous montre comment utiliser le filtrage d’e‑mails sensible à la casse.

Spécifier l’encodage pour le constructeur de requête

Les API ImapQueryBuilder le constructeur peut être utilisé pour spécifier l’encodage de la chaîne de recherche. Cela peut également être défini en utilisant le DefaultEncoding propriété du MailQueryBuilder. Le fragment de code suivant vous montre comment spécifier l’encodage pour le constructeur de requête.

Options de filtrage personnalisées

Filtrer les messages avec un indicateur personnalisé

Recherche personnalisée pour le filtrage

Par exemple, la norme RFC 3501 ne permet pas de rechercher un message basé sur l’existence de pièces jointes. Mais Gmail fournit Extensions IMAP qui permettent d’effectuer une telle recherche. Le fragment de code suivant montre comment créer une requête correspondante.

ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");

MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);

Filtrer les messages avec prise en charge de la pagination

Le ImapClient fournit la capacité de rechercher des messages dans la boîte aux lettres et de les lister avec prise en charge de la pagination. Le fragment de code suivant vous montre comment filtrer les messages avec la pagination.