Filtrar Mensajes del Servidor usando Cliente IMAP

La clase ImapClient ofrece el método ListMessages() que obtiene todos los mensajes de un buzón. Para obtener solo los mensajes que coinciden con alguna condición, utiliza el método sobrecargado ListMessages() que toma MailQuery como argumento. La clase MailQuery proporciona varias propiedades para especificar las condiciones, por ejemplo, fecha, asunto, remitente, destinatario, etc. El primer ejemplo ilustra cómo filtrar mensajes según la fecha y el asunto. También mostramos cómo filtrar por otros criterios y cómo construir consultas más complejas. La API también proporciona la capacidad de aplicar criterios de búsqueda que son sensibles a mayúsculas y minúsculas para hacer coincidir criterios de filtrado exactos. La API también permite especificar la codificación de la cadena de búsqueda para filtrar mensajes del buzón.

Filtrar Mensajes del Buzón

  1. Conectar e iniciar sesión en un servidor IMAP
  2. Crear una instancia de MailQuery y establecer las propiedades
  3. Llamar al método ImapClient.ListMessages(MailQuery query) y pasar el MailQuery con los parámetros para obtener solo los mensajes filtrados.

El siguiente fragmento de código muestra cómo conectarse a un buzón IMAP y obtener mensajes que llegaron hoy y tienen la palabra “newsletter” en el asunto.

Obtener Mensajes que Cumplen Criterios Específicos

Los ejemplos de código anteriores filtran mensajes en función del asunto y la fecha del correo electrónico. También podemos usar otras propiedades para establecer otras condiciones soportadas. A continuación se presentan algunos ejemplos de cómo establecer las condiciones utilizando MailQuery. Los siguientes fragmentos de código muestran cómo filtrar correos electrónicos en:

  1. La fecha de hoy.
  2. Un rango de fechas.
  3. De un remitente específico.
  4. De un dominio específico.
  5. De un destinatario específico.

Fecha de Hoy

El siguiente fragmento de código muestra cómo filtrar correos electrónicos en la Fecha de Hoy.

Rango de Fechas

El siguiente fragmento de código muestra cómo filtrar correos electrónicos en el rango de fechas.

Remitente Específico

El siguiente fragmento de código muestra cómo filtrar correos electrónicos de un remitente específico.

Dominio Específico

El siguiente fragmento de código muestra cómo filtrar correos electrónicos de un dominio específico.

Destinatario Específico

El siguiente fragmento de código muestra cómo filtrar correos electrónicos de un destinatario específico.

Construir Consultas Complejas

Si diferentes propiedades de MailQueryBuilder se establecen en declaraciones separadas, entonces todas las condiciones se igualarán. Por ejemplo, si queremos obtener mensajes entre un rango de fechas y de un host específico, necesitamos escribir tres declaraciones.

Combinando Consultas con AND

El siguiente fragmento de código muestra cómo combinar consultas con AND.

Combinando Consultas con OR

MailQueryBuilder proporciona el método Or() que toma dos instancias de MailQuery como parámetros. Obtiene los mensajes que coinciden con cualquiera de las dos condiciones especificadas. El siguiente fragmento de código muestra cómo filtrar mensajes que tienen “test” en el asunto o “noreply@host.com” como remitente. El siguiente fragmento de código muestra cómo combinar consultas con OR.

Filtración en InternalDate

Los mensajes se pueden extraer del servidor en función de la InternalDate, sin embargo, a veces el servidor no devuelve todos los mensajes como se ve en la bandeja de entrada. Su razón puede ser la zona horaria del servidor, ya que puede no ser UTC para todos los servidores como Gmail. Aspose envía comandos como 008 SEARCH ON 4-May-2014 de acuerdo con el protocolo IMAP, sin embargo, el resultado puede diferir debido a la configuración de la zona horaria del servidor. Se añade un nuevo miembro en ImapMessageInfo como InternalDate que ayuda además en la filtración de mensajes. El siguiente fragmento de código muestra el uso de InternalDate para filtrar mensajes.

Filtrado de Correos Electrónicos Sensible a Mayúsculas y Minúsculas

El siguiente fragmento de código muestra cómo utilizar el filtrado de correos electrónicos sensible a mayúsculas y minúsculas.

Especificar Codificación para el Constructor de Consultas

El constructor ImapQueryBuilder de la API se puede utilizar para especificar la codificación para la cadena de búsqueda. Esto también se puede establecer utilizando la propiedad DefaultEncoding del MailQueryBuilder. El siguiente fragmento de código muestra cómo especificar la codificación para el constructor de consultas.

Filtrar Mensajes con Soporte de Paginación

El ImapClient proporciona la capacidad de buscar mensajes del buzón y listarlos con soporte de paginación. El siguiente fragmento de código muestra cómo filtrar mensajes con soporte de paginación.

Filtrar Mensajes con Bandera Personalizada

Filtrar Mensajes usando Búsquedas Personalizadas

Por ejemplo, el estándar RFC 3501 no permite buscar mensajes en función de la existencia de archivos adjuntos en los mensajes. Pero Gmail proporciona Extensiones IMAP que permiten realizar tal búsqueda. El siguiente fragmento de código muestra cómo hacer una consulta correspondiente.

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

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