Récupérer et lister les e‑mails depuis le serveur IMAP
Récupération et listage des messages
Comment obtenir des informations d’identification pour les messages d’une boîte aux lettres
Lors de la récupération et du traitement des messages e‑mail, vous pouvez obtenir des informations d’identification détaillées, telles que les numéros de séquence et les ID uniques, en utilisant les fonctionnalités suivantes fournies par la dernière version d’Aspose.Email pour .NET :
Aspose.Email.ImapMessageInfo classe : Représente les informations d’identification d’un message dans une boîte aux lettres IMAP.
ImapMessageInfo.SequenceNumber propriété : Récupère le numéro de séquence du message.
ImapMessageInfo.UniqueId propriété : Récupère l’identifiant unique du message.
Aspose.Email.MailMessage.ItemId propriété : Représente des informations d’identification supplémentaires concernant le message dans la boîte aux lettres.
Le fragment de code suivant montre comment obtenir des informations d’identification pour les messages d’une boîte aux lettres IMAP :
- Créez une instance de la ImapClient classe en fournissant les paramètres nécessaires tels que l’hôte du serveur IMAP, le port, l’adresse e‑mail, le mot de passe et les options de sécurité.
- Utilisez le ListMessages méthode pour récupérer une liste de messages du dossier "INBOX". Limitez la liste aux cinq premiers messages en utilisant la méthode Take(5).
- Extraire les numéros de séquence des messages listés en utilisant le SequenceNumber propriété de chaque message.
- Utilisez le FetchMessages méthode pour récupérer les détails complets des messages depuis le serveur, en utilisant les numéros de séquence obtenus à l’étape précédente.
- Parcourez les messages récupérés et pour chaque message, récupérez et affichez les informations suivantes :
- Le numéro de séquence du message.
- La propriété ItemId.SequenceNumber.
- L’objet du message.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
// List the first 5 messages from the inbox
var msgs = client.ListMessages("INBOX").Take(5);
// Get sequence numbers of the messages
var seqIds = msgs.Select(t => t.SequenceNumber);
// Fetch messages based on sequence numbers
var msgsViaFetch = client.FetchMessages(seqIds);
for (var i = 0; i < 5; i++)
{
var thisMsg = msgsViaFetch[i];
Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
}
}
Lister les IDs de messages MIME depuis le serveur
ImapMessageInfo fournit le MIME MessageId pour identifier le message sans extraire le message complet. Le fragment de code suivant vous montre comment lister le messageId MIME.
Lister les messages du serveur
Aspose.Email fournit une variante surchargée à 2 membres de ListMessages() pour récupérer un nombre spécifié de messages selon une requête. Le fragment de code suivant vous montre comment lister les messages.
Lister les messages de façon récursive
Le protocole IMAP prend en charge le listing récursif des messages depuis un dossier de boîte aux lettres. Cela aide également à lister les messages des sous‑dossiers d’un dossier. Le fragment de code suivant vous montre comment lister les messages récursivement.
Lister les messages avec MultiConnection
ImapClient fournit un UseMultiConnection propriété qui peut être utilisée pour créer plusieurs connexions pour des opérations intensives. Vous pouvez également définir le nombre de connexions à utiliser pendant le mode multiconnection en utilisant ImapClient.ConnectionsQuantity. Le fragment de code suivant montre l’utilisation du mode multiconnection pour lister les messages et compare ses performances avec le mode connexion unique.
Lister les messages avec prise en charge de la pagination
Dans les scénarios où le serveur de messagerie contient un grand nombre de messages dans la boîte aux lettres, il est souvent souhaitable de lister ou de récupérer les messages avec prise en charge de la pagination. API Aspose.Email ImapClient vous permet de récupérer les messages du serveur avec prise en charge de la pagination.
Lister les pièces jointes du message
Pour obtenir des informations sur les pièces jointes comme le nom, la taille sans récupérer les données de la pièce jointe, essayez les API suivantes :
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - Représente les informations d’une pièce jointe.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Représente une collection de ImapAttachmentInfo classe.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Obtient des informations pour chaque pièce jointe d’un message.
L’exemple de code ci-dessous vous montrera comment utiliser les API :
- Appelez le ListMessages() méthode sur l’objet imapClient. Cette méthode renverra une ImapMessageInfoCollection contenant les informations sur les messages dans la boîte aux lettres.
- Parcourez chaque message dans la collection messageInfoCollection à l’aide d’une boucle foreach.
- Appelez le ListAttachments() méthode sur l’objet imapClient, en passant la propriété SequenceNumber de l’objet message comme paramètre. Cette méthode renverra une ImapAttachmentInfoCollection contenant les informations sur les pièces jointes du message.
- Parcourez chaque pièce jointe dans la collection attachmentInfoCollection à l’aide d’une boucle foreach.
- Dans la boucle interne, vous pouvez accéder aux informations de chaque pièce jointe en utilisant les propriétés de l’objet attachmentInfo.
var messageInfoCollection = imapClient.ListMessages();
foreach (var message in messageInfoCollection)
{
var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);
foreach (var attachmentInfo in attachmentInfoCollection)
{
Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
}
}
Récupération et enregistrement des messages
Récupérer les messages du serveur
Le ImapClient la classe peut récupérer des messages depuis un serveur IMAP et enregistrer les messages au format EML sur un disque local. Les étapes suivantes sont nécessaires pour enregistrer les messages sur le disque :
- Créez une instance de la ImapClient classe.
- Spécifiez un nom d’hôte, un port, un nom d’utilisateur et un mot de passe dans l’ImapClient constructor.
- Sélectionnez le dossier en utilisant SelectFolder() méthode.
- Appelez le ListMessages méthode pour obtenir le ImapMessageInfoCollection objet.
- Itérer à travers le ImapMessageInfoCollection collection, appelez le SaveMessage() méthode et fournir le chemin de sortie ainsi que le nom du fichier.
Le fragment de code suivant montre comment récupérer des messages email depuis un serveur et les enregistrer.
Récupérer les messages dans l’ordre décroissant
Aspose.Email fournit ImapClient.ListMessagesByPage méthode qui répertorie les messages avec prise en charge de la pagination. Certaines surcharges de ImapClient.ListMessagesByPage accepte PageSettings en tant que paramètre. PageSettings fournit un AscendingSorting propriété qui, lorsqu’elle est définie sur false, renvoie les e‑mails dans l’ordre décroissant.
L’exemple de code suivant démontre l’utilisation de AscendingSorting propriété du PageSettings classe pour modifier l’ordre des emails.
Enregistrer les messages au format MSG
Pour enregistrer les e‑mails au format MSG, le ImapClient.FetchMessage() la méthode doit être appelée. Elle renvoie le message sous forme d’une instance de MailMessage classe. Le MailMessage.Save() la méthode peut alors être appelée pour enregistrer le message au format MSG. Le fragment de code suivant montre comment enregistrer les messages au format MSG.
Grouper les messages récupérés
ImapClient fournit un FetchMessages méthode qui accepte un itérable de Numéros de séquence ou d’ID unique et renvoie une liste de MailMessage. Le snippet de code suivant démontre l’utilisation du FetchMessages méthode pour récupérer les messages par Numéros de séquence et ID unique.
Récupérer les dossiers et lire les messages de façon récursive
Dans cet article, la plupart des ImapClient Les fonctionnalités sont utilisées pour créer une application qui liste tous les dossiers et sous‑dossiers de façon récursive depuis un serveur IMAP. Elle enregistre également les messages de chaque dossier et sous‑dossier au format MSG sur le disque local. Sur le disque, les dossiers et messages sont créés et sauvegardés dans la même structure hiérarchique que sur le serveur IMAP. Le fragment de code suivant montre comment obtenir les messages et les informations des sous‑dossiers de façon récursive.
Gestion des informations spéciales du message
Récupérer les paramètres supplémentaires comme informations de résumé
Obtenir les informations de l’en-tête List-Unsubscribe
L’en-tête List-Unsubscribe contient l’URL permettant de se désabonner des listes de diffusion, par exemple publicités, newsletters, etc. Pour obtenir l’en-tête List-Unsubscribe, utilisez le ListUnsubscribe propriété du ImapMessageInfo classe. L’exemple suivant montre l’utilisation de la ListUnsubscribe propriété pour obtenir l’en-tête List-Unsubscribe.