Filtrar mensajes del servidor mediante el cliente IMAP

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

Filtrar mensajes del buzón

  1. Conectarse e iniciar sesión en un servidor IMAP
  2. Crea una instancia del MailQuery y establecer las propiedades
  3. Llame al ImapClient.ListMessages(MailQuery query) método y pase 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 recibir los mensajes que llegaron hoy y que tienen la palabra «boletín» en el asunto.

Reciba mensajes que cumplan con criterios específicos

Los ejemplos de código anteriores filtra los mensajes según el asunto y la fecha del correo electrónico. También podemos usar otras propiedades para establecer otras condiciones compatibles. A continuación se muestran algunos ejemplos de cómo configurar las condiciones mediante MailQuery. Los siguientes fragmentos de código muestran cómo filtrar los correos electrónicos según:

  1. La fecha de hoy.
  2. Un intervalo 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 los correos electrónicos en Fecha de hoy.

Intervalo de fechas

En el siguiente fragmento de código, se muestra cómo filtrar los correos electrónicos por intervalo de fechas.

Remitente específico

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

Dominio específico

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

Destinatario específico

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

Creación de consultas complejas

Si es diferente MailQueryBuilder las propiedades se establecen en declaraciones separadas, entonces todas las condiciones coincidirían. Por ejemplo, si queremos recibir mensajes entre un intervalo de fechas y los de un anfitrión específico, necesitamos escribir tres declaraciones.

Combinación de consultas con AND

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

Combinación de consultas con OR

MailQueryBuilder proporciona la Or() método que requiere dos MailQuery instancias como parámetros. Obtiene los mensajes que cumplen cualquiera de las dos condiciones especificadas. El siguiente fragmento de código muestra cómo filtrar los mensajes que tienen la palabra «test» en el asunto o «noreply@host.com» como remitente. En el siguiente fragmento de código, se muestra cómo combinar consultas con OR.

Filtración en InternalDate

Los mensajes se pueden extraer del servidor en función de InternalDate; sin embargo, a veces el servidor no devuelve todos los mensajes tal como aparecen en la bandeja de entrada. Su motivo puede ser la zona horaria del servidor, ya que es posible que no sea UTC para todos los servidores, como Gmail. Aspose envía comandos como 008 SEARCH EL 4 de mayo de 2014 según el Protocolo IMAP sin embargo, el resultado puede variar debido a la configuración de la zona horaria del servidor. Se agrega un nuevo miembro en ImapMessageInfo as InternalDate lo que ayuda aún más a filtrar los mensajes. El siguiente fragmento de código muestra el uso de InternalDate para filtrar los mensajes.

Filtrado de correos electrónicos sensibles a mayúsculas

El siguiente fragmento de código muestra cómo usar el filtrado de correos electrónicos que distingue mayúsculas y minúsculas.

Especificar la codificación para Query Builder

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

Filtrar mensajes con soporte de paginación

The ImapClient brinda la capacidad de buscar mensajes en el buzón y enumerarlos con soporte de paginación. El siguiente fragmento de código muestra cómo filtrar los mensajes que admiten la paginación.

Filtrar mensajes con bandera personalizada

Filtrar mensajes mediante la búsqueda personalizada

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

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

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