Filtrado de correo IMAP - Métodos, criterios y ejemplos de código
Filtrado básico de mensajes
El ImapClient class proporciona el ListMessages() método que obtiene todos los mensajes de un buzón. Para obtener solo los mensajes que coincidan con alguna condición, use el 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 mensajes basados en 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 brinda la capacidad de aplicar criterios de búsqueda sensibles a mayúsculas para coincidir exactamente con los criterios de filtrado. Además, la API permite especificar la codificación de la cadena de búsqueda para filtrar mensajes del buzón.
Filtrar mensajes del buzón
- Conectar e iniciar sesión en un servidor IMAP
- Cree una instancia de la MailQuery y establecer las propiedades
- Llame al ImapClient.ListMessages(MailQuery query) método 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.
Filtrar mensajes por criterios específicos
Los ejemplos de código anteriores filtra mensajes basándose en el asunto y la fecha del correo. También podemos usar otras propiedades para establecer otras condiciones admitidas. A continuación, algunos ejemplos de cómo establecer las condiciones usando MailQuery. Los fragmentos de código que siguen muestran cómo filtrar correos electrónicos en:
- Fecha de hoy.
- Un rango de fechas.
- De un remitente específico.
- De un dominio específico.
- De un destinatario específico.
Fecha de Hoy
El siguiente fragmento de código muestra cómo filtrar correos electrónicos a la fecha de hoy.
Rango de Fechas
El siguiente fragmento de código muestra cómo filtrar correos electrónicos por rango de fechas.
Remitente Específico
El siguiente fragmento de código muestra cómo filtrar correos electrónicos a un remitente específico.
Dominio Específico
El siguiente fragmento de código muestra cómo filtrar correos electrónicos a un dominio específico.
Destinatario Específico
El siguiente fragmento de código muestra cómo filtrar correos electrónicos a un destinatario específico.
Construcción avanzada de consultas
Si diferentes MailQueryBuilder las propiedades se establecen en declaraciones separadas, luego todas las condiciones se cumplirán. Por ejemplo, si queremos obtener mensajes entre un rango de fechas y de un host específico, necesitamos escribir tres declaraciones.
Combinar consultas con AND
El siguiente fragmento de código muestra cómo combinar consultas con AND.
Combinar consultas con OR
MailQueryBuilder proporciona el Or() método que toma dos MailQuery instancias 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 tengan “test” en el asunto o “noreply@host.com” como remitente. El siguiente fragmento de código muestra cómo combinar consultas con OR.
Filtrado basado en InternalDate
Los mensajes pueden extraerse del servidor basándose en InternalDate, sin embargo a veces el servidor no devuelve todos los mensajes visibles en la bandeja de entrada. La razón puede ser la zona horaria del servidor, ya que no siempre es UTC en 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 variar debido a la configuración de zona horaria del servidor. Se ha añadido un nuevo miembro en ImapMessageInfo como 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 mensajes.
Filtrado sensible a mayúsculas/minúsculas
El siguiente fragmento de código muestra cómo usar filtrado de correos sensible a mayúsculas.
Especificar codificación para el constructor de consultas
Los API ImapQueryBuilder el constructor puede usarse para especificar la codificación de la cadena de búsqueda. También puede establecerse usando el DefaultEncoding propiedad del MailQueryBuilder. El siguiente fragmento de código muestra cómo especificar la codificación para el constructor de consultas.
Opciones de filtrado personalizadas
Filtrar mensajes con bandera personalizada
Búsqueda personalizada para filtrado
Por ejemplo, el estándar RFC 3501 no permite buscar mensajes basados en la existencia de archivos adjuntos. Pero Gmail ofrece Extensiones IMAP que permiten realizar tal búsqueda. El siguiente fragmento de código muestra cómo crear una consulta correspondiente.
ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");
MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);
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.