Recuperar y listar correos electrónicos del servidor IMAP
Recuperación y listado de mensajes
Cómo obtener información de identificación para mensajes en un buzón
Al recuperar y procesar mensajes de correo, puedes obtener información detallada de identificación, como números de secuencia e IDs únicos, usando las siguientes características proporcionadas por la última versión de Aspose.Email para .NET:
Aspose.Email.ImapMessageInfo clase: Representa la información de identificación de un mensaje en un buzón IMAP.
ImapMessageInfo.SequenceNumber propiedad: Obtiene el número de secuencia del mensaje.
ImapMessageInfo.UniqueId propiedad: Obtiene el identificador único del mensaje.
Aspose.Email.MailMessage.ItemId propiedad: Representa información adicional de identificación del mensaje dentro del buzón.
El siguiente fragmento de código demuestra cómo obtener información de identificación para mensajes en un buzón IMAP:
- Cree una instancia de la ImapClient clase proporcionando los parámetros necesarios como el host del servidor IMAP, puerto, dirección de correo, contraseña y opciones de seguridad.
- Utilice el ListMessages método para obtener una lista de mensajes de la carpeta "INBOX". Limita la lista a los primeros cinco mensajes usando el método Take(5).
- Extrae los números de secuencia de los mensajes listados usando el SequenceNumber propiedad de cada mensaje.
- Utilice el FetchMessages método para recuperar los detalles completos de los mensajes del servidor, usando los números de secuencia obtenidos en el paso anterior.
- Recorre los mensajes obtenidos y, para cada mensaje, recupera y muestra la siguiente información:
- El número de secuencia del mensaje.
- La propiedad ItemId.SequenceNumber.
- El asunto del mensaje.
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}");
}
}
Listar IDs de mensajes MIME del servidor
ImapMessageInfo provee el MIME MessageId para identificar mensajes sin extraer el mensaje completo. El siguiente fragmento de código muestra cómo listar el messageId MIME.
Listar mensajes del servidor
Aspose.Email proporciona una variante sobrecargada de 2 miembros de ListMessages() para recuperar un número especificado de mensajes basados en una consulta. El siguiente fragmento de código muestra cómo listar mensajes.
Listar mensajes recursivamente
El protocolo IMAP soporta listar mensajes recursivamente desde una carpeta del buzón. Esto también ayuda a listar mensajes de subcarpetas. El siguiente fragmento de código muestra cómo listar mensajes recursivamente.
Listar mensajes con MultiConnection
ImapClient proporciona un UseMultiConnection propiedad que puede usarse para crear múltiples conexiones para operaciones intensivas. También puede establecer el número de conexiones a usar durante el modo multiconexión mediante ImapClient.ConnectionsQuantity. El siguiente fragmento de código demuestra el uso del modo de multiconexión para listar mensajes y compara su rendimiento con el modo de conexión única.
Listar mensajes con soporte de paginación
En escenarios donde el servidor de correo contiene una gran cantidad de mensajes en el buzón, a menudo se desea listar o recuperar los mensajes con soporte de paginación. API de Aspose.Email ImapClient le permite recuperar los mensajes del servidor con soporte de paginación.
Listar adjuntos de mensajes
Para obtener información sobre los adjuntos, como nombre y tamaño sin recuperar los datos del adjunto, pruebe las siguientes API:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - Representa información de un adjunto.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Representa una colección de los ImapAttachmentInfo clase.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Obtiene información de cada adjunto en un mensaje.
El ejemplo de código con los pasos a continuación le mostrará cómo usar las API:
- Llame al ListMessages() método en el objeto imapClient. Este método devolverá una ImapMessageInfoCollection que contiene información sobre los mensajes del buzón.
- Itera a través de cada mensaje en la colección messageInfoCollection usando un bucle foreach.
- Llame al ListAttachments() método en el objeto imapClient, pasando la propiedad SequenceNumber del objeto mensaje como parámetro. Este método devolverá una ImapAttachmentInfoCollection que contiene información sobre los adjuntos del mensaje.
- Itera a través de cada adjunto en la colección attachmentInfoCollection usando un bucle foreach.
- Dentro del bucle interno, puedes acceder a la información de cada adjunto usando las propiedades del objeto 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);
}
}
Recuperar y guardar mensajes
Obtener mensajes del servidor
El ImapClient la clase puede obtener mensajes de un servidor IMAP y guardarlos en formato EML en un disco local. Los siguientes pasos son necesarios para guardar los mensajes en el disco:
- Cree una instancia de la ImapClient clase.
- Especifique el nombre de host, puerto, usuario y contraseña en ImapClient constructor.
- Seleccione la carpeta usando SelectFolder() método.
- Llame al ListMessages método para obtener el ImapMessageInfoCollection objeto.
- Iterar a través de ImapMessageInfoCollection colección, llame al SaveMessage() método y proporcione la ruta de salida y el nombre del archivo.
El siguiente fragmento de código muestra cómo obtener mensajes de correo de un servidor y guardarlos.
Obtener mensajes en orden descendente
Aspose.Email proporciona ImapClient.ListMessagesByPage método que lista mensajes con soporte de paginación. Algunas sobrecargas de ImapClient.ListMessagesByPage acepta PageSettings como parámetro. PageSettings provee un AscendingSorting propiedad que, cuando se establece en false, devuelve los correos en orden descendente.
El siguiente código de ejemplo demuestra el uso de AscendingSorting propiedad del PageSettings clase para cambiar el orden de los correos.
Guardar mensajes en formato MSG
Para guardar correos en formato MSG, el ImapClient.FetchMessage() se necesita llamar al método. Devuelve el mensaje en una instancia de MailMessage clase. El MailMessage.Save() el método puede entonces llamarse para guardar el mensaje en MSG. El siguiente fragmento de código muestra cómo guardar mensajes en formato MSG.
Agrupar mensajes obtenidos
ImapClient proporciona un FetchMessages método que acepta un iterable de Números de Secuencia o ID Único y devuelve una lista de MailMessage. El siguiente fragmento de código demuestra el uso del FetchMessages método para obtener mensajes por Números de Secuencia e ID Único.
Obtener carpetas y leer mensajes recursivamente
En este artículo, la mayoría de los ImapClient Las funciones se utilizan para crear una aplicación que lista todas las carpetas y subcarpetas de forma recursiva desde un servidor IMAP. También guarda los mensajes en cada carpeta y subcarpeta en formato MSG en un disco local. En el disco, carpetas y mensajes se crean y guardan con la misma estructura jerárquica que en el servidor IMAP. El siguiente fragmento de código muestra cómo obtener los mensajes y la información de subcarpetas de forma recursiva.
Manejo de información especial del mensaje
Recuperar parámetros extra como información resumida
Obtener información del encabezado List-Unsubscribe
El encabezado List-Unsubscribe contiene la URL para darse de baja de listas de correo, p. ej., anuncios, boletines, etc. Para obtener el encabezado List-Unsubscribe, use el ListUnsubscribe propiedad del ImapMessageInfo clase. El siguiente ejemplo muestra el uso del ListUnsubscribe propiedad para obtener el encabezado List-Unsubscribe.