Récupération d'e-mails depuis le serveur POP3

Enregistrer les e‑mails sur le disque sans parsing

Pour télécharger les messages e‑mail depuis un serveur POP3 sans les analyser, vous pouvez utiliser le save_message méthode de Aspose.Email Pop3Client classe. Le fragment de code suivant illustre comment enregistrer un message en utilisant son numéro de séquence, dans ce cas le numéro 1. Le save_message méthode préserve le format EML original sans parsing :

Analyser les messages avant de les enregistrer

Vous pouvez récupérer un message e‑mail spécifique en utilisant le fetch_message méthode du Pop3Client classe, spécifiant le numéro de séquence souhaité pour l’objet client. L’exemple de code suivant montre comment récupérer un message particulier puis l’enregistrer en utilisant son sujet comme nom de fichier en appelant le save méthode 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)

Filtrer les e‑mails du serveur par critères

Le Aspose.Email Pop3Client classe fournit le list_messages() 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é list_messages(query) méthode qui prend MailQuery comme argument. Le MailQuery classe fournit diverses propriétés pour spécifier les conditions de requête, par exemple, la date, le sujet, l’expéditeur, le destinataire, etc.

Pour construire l’expression de recherche, utilisez le MailQueryBuilder classe. Tout d’abord, définissez toutes les conditions et contraintes nécessaires, puis remplissez l’objet MailQuery avec la requête créée par le MailQueryBuilder. Pop3Client utilise cet objet MailQuery pour récupérer les informations filtrées du serveur.

L’exemple de code suivant montre comment filtrer et récupérer les e‑mails d’un compte Gmail en fonction de divers critères, y compris le sujet, la date interne, l’expéditeur et le destinataire. Il montre également le filtrage sensible à la casse et comment construire des requêtes complexes efficacement.

  1. Établissez une connexion au serveur POP3 Gmail en utilisant le Pop3Client classe avec l’adresse du serveur, le port, le nom d’utilisateur et le mot de passe spécifiés. Les options de sécurité sont définies sur AUTO pour une connexion sécurisée.
  2. Créez une instance de la MailQueryBuilder pour construire les critères de recherche pour filtrer les e‑mails.
  3. Filtrage par Sujet :
    • Les e‑mails contenant "Newsletter" dans le sujet sont spécifiés comme condition de filtre.
  4. Filtrage par Date interne :
    • Un filtre est défini pour les e‑mails reçus à la date actuelle.
    • Un filtre supplémentaire est ajouté pour récupérer les e‑mails reçus au cours de la dernière semaine.
  5. Filtrage par Expéditeur :
    • Des filtres sont appliqués pour rechercher les e‑mails d’une adresse spécifique (saqib.razzaq@127.0.0.1) et pour inclure les e‑mails d’un domaine particulier (SpecificHost.com).
  6. Filtrage par Destinataire :
    • Un filtre est spécifié pour trouver les e‑mails envoyés à un destinataire spécifique.
  7. Combiner des requêtes en utilisant l’opérateur OR pour rechercher des e‑mails qui correspondent soit à un sujet donné, soit envoyés depuis une adresse spécifique.
  8. Filtrage sensible à la casse :
    • Un filtre sensible à la casse pour le sujet contenant "Newsletter" est spécifié (indiqué par le paramètre True).
  9. Liste des messages :
    • La méthode list_messages() est appelée avec la requête construite pour récupérer les messages filtrés de la boîte aux lettres.
  10. Enfin, affichez le nombre de messages filtrés.

Filtrer les e‑mails par date

Pour récupérer les messages par date de livraison, utilisez le internal_date propriété comme indiqué dans l’exemple de code ci-dessous :

import aspose.email as ae
from datetime import datetime

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

Filtrer les e‑mails par plage de dates

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

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))

Filtrer les e‑mails par expéditeur

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

import aspose.email as ae

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

Filtrer les e‑mails par domaine

Pour récupérer les messages d’un domaine spécifique, utilisez le from_address propriété 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")

Filtrer les e‑mails par destinataire

Pour récupérer les messages destinés à un destinataire spécifique, utilisez le to propriété comme indiqué dans l’exemple de code ci-dessous :

import aspose.email as ae

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

Construire des requêtes de recherche complexes

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

Combiner les requêtes avec AND

Le fragment de code suivant vous montre comment combiner des requêtes avec l’opérateur 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 les requêtes avec OR

Le fragment de code suivant vous montre comment combiner des requêtes avec l’opérateur OR :

import aspose.email as ae

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

Appliquer des 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)