Travailler avec les messages du serveur

Obtention des informations de la boîte aux lettres

Nous pouvons obtenir des informations sur la boîte aux lettres, comme le nombre de messages et la taille de la boîte aux lettres, en utilisant les méthodes GetMailBoxSize() et GetMailBoxInfo().

  • La méthode GetMailBoxSize() renvoie la taille de la boîte aux lettres en octets.
  • La méthode GetMailBoxInfo() renvoie un objet de type Pop3MailBoxInfo.

Il est également possible d’obtenir le nombre de messages en utilisant la propriété MessageCount et la taille en utilisant la propriété OccupiedSize. Le code d’exemple suivant montre comment obtenir des informations sur la boîte aux lettres. Il montre comment :

  1. Créez un Pop3Client.
  2. Se connecter à un serveur POP3.
  3. Obtenir la taille de la boîte aux lettres.
  4. Obtenir les informations de la boîte aux lettres.
  5. Obtenir le nombre de messages dans la boîte aux lettres.
  6. Obtenir la taille occupée.

Obtenir le nombre d’e-mails dans la boîte aux lettres

Le snippet de code suivant montre comment compter les messages e‑mail dans une boîte aux lettres.

Aspose.Email permet aux développeurs de travailler avec les e‑mails de nombreuses manières. Par exemple, ils peuvent récupérer les informations d’en‑tête avant de décider de télécharger un e‑mail. Ou ils peuvent récupérer les e‑mails depuis un serveur et les enregistrer sans les analyser (plus rapide) ou après les avoir analysés (plus lent). Cet article montre comment récupérer et convertir les e‑mails.

Récupération des informations des en‑têtes d’e‑mail

Les en-têtes d’e-mail peuvent nous fournir des informations sur un message e-mail que nous pouvons utiliser pour décider de récupérer ou non le message complet. Typiquement, les informations d’en-tête contiennent l’expéditeur, le sujet, la date de réception, etc. (Les en-têtes d’e-mail sont décrits en détail dans Personnalisation des en-têtes d’e-mail. Ce sujet porte spécifiquement sur l’envoi d’e-mails avec SMTP, mais les informations de contenu d’en-tête restent valides pour les e-mails POP3). Les exemples suivants montrent comment récupérer les en-têtes d’e-mail depuis un serveur POP3 par le numéro de séquence du message.

Récupération des messages électroniques

Le composant de classe Aspose.Email.Pop3 offre la capacité de récupérer les messages e-mail depuis le serveur POP3 et de les analyser en une instance MailMessage à l’aide des composants MailMessage. La classe MailMessage contient plusieurs propriétés et méthodes pour manipuler le contenu des e-mails. En utilisant la fonction FetchMessage de la classe Pop3Client, vous pouvez obtenir une instance MailMessage directement depuis le serveur POP3. Le fragment de code suivant vous montre comment récupérer un message e-mail complet depuis le serveur POP3.

Récupération des informations récapitulatives d’un message à l’aide d’un Id unique

Le client POP3 de l’API peut récupérer les informations résumées d’un message depuis le serveur en utilisant l’identifiant unique du message. Cela fournit un accès rapide aux informations succinctes du message sans d’abord récupérer le message complet depuis le serveur. Le fragment de code suivant vous montre comment récupérer les informations résumées d’un message.

Lister les messages avec MultiConnection

Pour les opérations à forte charge, Aspose.Email propose la propriété ‘use_multi_connection’ du Pop3Client classe pour utiliser plusieurs connexions lors de la récupération d’e-mails. Cependant, l’utilisation de ce mode ne conduit pas nécessairement à une augmentation des performances. Le fragment de code suivant vous montre comment établir une connexion à un serveur POP3, configurer le client pour autoriser jusqu’à 5 connexions simultanées et activer le mode multi-connexion afin de récupérer les informations sur les messages présents sur le serveur :

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()

Récupération des messages du serveur et enregistrement sur disque

Enregistrer le message sur le disque sans analyse

Si vous souhaitez télécharger des messages e-mail depuis le serveur POP3 sans les analyser, utilisez la fonction SaveMessage de la classe Pop3Client. La fonction SaveMessage ne parse pas le message e-mail, elle est donc plus rapide que la fonction FetchMessage. Le fragment de code suivant montre comment enregistrer un message par son numéro de séquence, dans ce cas le numéro 1. La méthode SaveMessage enregistre le message au format EML original sans le parser.

Analyser le message avant l’enregistrement

Utilisez la méthode ‘fetch_message’ de l’objet client créé avec Pop3Client classe pour récupérer le message avec un numéro de séquence spécifique. L’exemple de code ci‑dessous montre comment récupérer un message spécifique et l’enregistrer en utilisant son sujet comme nom de fichier en appelant la méthode ‘save’ sur l’objet msg :

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

Filtrage des messages par expéditeur, destinataire ou date

La classe Pop3Client, décrite dans Connection à un serveur POP3, fournit la méthode list_messages() qui récupère tous les messages d’une boîte aux lettres. Pour obtenir uniquement les messages correspondant à une condition, utilisez la méthode surchargée ListMessages() qui prend un MailQuery en argument. La classe MailQuery offre diverses propriétés pour spécifier les conditions de requête, par exemple, la date, le sujet, l’expéditeur, le destinataire, etc. La classe MailQueryBuilder sert à construire l’expression de recherche. D’abord, toutes les conditions et contraintes sont définies, puis MailQuery est remplie avec la requête développée par MailQueryBuilder. L’objet de la classe MailQuery est utilisé par Pop3Client pour extraire les informations filtrées du serveur. Cet article montre comment filtrer les messages e‑mail d’une boîte aux lettres. Le premier exemple illustre le filtrage des messages selon la date et le sujet. Nous montrons également comment filtrer selon d’autres critères et comment construire des requêtes plus complexes. Il montre également l’application du filtre Date et Heure pour récupérer les e‑mails spécifiques de la boîte. De plus, il montre comment appliquer un filtrage sensible à la casse.

Filtrage des messages de la boîte aux lettres

Pour filtrer les messages d’une boîte aux lettres :

  1. Connectez‑vous et connectez‑vous à un serveur POP3.
  2. Créez une instance de MailQuery et définissez les propriétés souhaitées.
  3. Appelez la méthode Pop3Client.list_messages(MailQuery query) et passez le MailQuery en paramètre pour obtenir uniquement les messages filtrés.

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

Obtention des messages répondant à des critères spécifiques

Aspose.Email permet également de construire des critères de recherche complexes pour interroger et filtrer les e‑mails. À cette fin, utilisez le MailQueryBuilder classe et ses propriétés. Les critères de récupération sont les suivants :

  • Récupérer les messages par date de livraison.
  • Récupérer les messages dans une plage.
  • Récupérer les messages d’un expéditeur spécifique.
  • Récupérer les messages d’un domaine spécifique.
  • Récupérer les messages pour un destinataire spécifique.

Date d’aujourd’hui

Pour récupérer les messages par date de livraison, utilisez la propriété ‘internal_date’ comme indiqué dans l’exemple de code ci‑dessus :

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Plage de dates

Pour récupérer les messages dans une plage de dates, utilisez la même propriété ‘internal_date’ en spécifiant la plage de dates comme indiqué dans l’exemple de code ci‑dessus :

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

Expéditeur spécifique

Pour récupérer les messages d’un expéditeur spécifique, utilisez la propriété ‘from_address’ comme indiqué dans l’exemple de code ci‑dessus :

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Domaine spécifique

Pour récupérer les messages d’un domaine spécifique, utilisez la propriété ‘from_address’ comme indiqué dans l’exemple de code ci‑dessous :

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

Destinataire spécifique

Pour récupérer les messages à destination d’un destinataire spécifique, utilisez la propriété ’to’ comme indiqué dans l’exemple de code ci‑dessus :

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

Construire des requêtes complexes

Parfois il est nécessaire de satisfaire plus d’une requête. Aspose.Email rend cela possible en combinant les requêtes dans plusieurs instructions. Créez un MailQueryBuilder objet et utilisez ses propriétés pour construire des requêtes spécifiques.

Combiner des requêtes avec AND

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

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

Combiner des requêtes avec OR

Le fragment de code suivant vous montre comment combiner des requêtes avec OR.

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

Application de filtres sensibles à la casse

L’API fournit également la capacité de filtrer les e‑mails de la boîte aux lettres selon un critère sensible à la casse. Les méthodes suivantes du StringComparisonField classe offre la capacité de rechercher des e‑mails en spécifiant des drapeaux sensibles à la casse.

Method Aspose.Email.StringComparisonField.contains(value, ignore_case) Method Aspose.Email.StringComparisonField.equals(value, ignore_case) Method Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Method Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

Le fragment de code suivant vous montre comment implémenter cette capacité dans votre projet :

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)