Filtrar Mensajes Desde el Buzón de Exchange
Filtrando Mensajes utilizando EWS
La IEWSClient interface proporciona el ListMessages() método 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 la clase MailQuery como argumento. La clase MailQuery proporciona varias propiedades para especificar condiciones, por ejemplo, fecha, asunto, remitente y destinatario. Además, la API también permite aplicar filtros de case-sensitivity para recuperar correos electrónicos del buzón.
Filtrar Mensajes por Criterio
Para obtener mensajes filtrados de un buzón:
- Conéctate al servidor de Exchange.
- Crea una instancia de MailQuery y establece las propiedades deseadas.
- Llama al método IEWSClient.ListMessages() y pasa el MailQuery en 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 los mensajes que contienen la cadena “Newsletter” en el asunto y fueron enviados hoy.
Filtrar Mensajes por la Fecha de Hoy
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función de la fecha de hoy.
Filtrar Mensajes por Rango de Fechas
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función del rango de fechas.
Filtrar Mensajes por Remitente Específico
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función de un remitente específico.
Filtrar Mensajes por Dominio Específico
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función de un dominio específico.
Filtrar Mensajes por Destinatario Específico
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función de un destinatario específico.
Filtrar Mensajes por MessageID
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función del MessageID.
Filtrar Mensajes por Todas las Notificaciones de Entrega de Correo
El siguiente fragmento de código muestra cómo filtrar todos los correos electrónicos en función de todas las notificaciones de entrega de correo.
Filtrar Mensajes por Tamaño de Mensaje
Construyendo Consultas Complejas
Si diferentes MailQueryBuilder propiedades se establecen en una declaración separada, se cumplen todas las condiciones. Por ejemplo, para obtener un mensaje en un rango de fechas particular y de un host específico, escribe 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 mensajes que coinciden con alguna de las dos condiciones especificadas. El ejemplo a continuación filtra mensajes que tienen la palabra “test” en el asunto o “noreply@host.com” como remitente. El siguiente fragmento de código muestra cómo combinar consultas con OR.
Filtrado de Correos Electrónicos Sensible a Mayúsculas y Minúsculas
Los correos electrónicos se pueden filtrar en función de la sensibilidad a mayúsculas y minúsculas especificando la bandera IgnoreCase en los criterios de filtro como se muestra en el siguiente fragmento de código.
Filtrando Mensajes con Soporte de Paginación
Ordenando mensajes filtrados en orden ascendente/descendente
El filtrado de correos electrónicos puede estar soportado con la clasificación de mensajes en orden ascendente/descendente. En este caso, el método OrderBy se utiliza para especificar el orden en que se ordenan los resultados de una búsqueda de correos electrónicos utilizando la clase MailQueryBuilder. Este método te permite definir criterios de ordenación para una consulta de búsqueda, especificando si los resultados deben clasificarse en orden ascendente o descendente según una propiedad particular.
El método acepta el parámetro ascendente, que especifica el orden de clasificación para la propiedad especificada. Si el parámetro ascendente es verdadero, significa que los resultados de la búsqueda deben ordenarse en orden ascendente. Por el contrario, si el parámetro ascendente es falso, significa que los resultados de la búsqueda deben ordenarse en orden descendente.
MailQueryBuilder builder = new MailQueryBuilder();
builder.Subject.Contains("Report");
builder.InternalDate.Since(new DateTime(2020, 1, 1));
builder.Subject.OrderBy(true); // ordenar el asunto de manera ascendente
builder.InternalDate.OrderBy(false); // ordenar la fecha de manera descendente
MailQuery query = builder.GetQuery();
// Obtener lista de mensajes
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false);
En el fragmento de código anterior, el método OrderBy se aplica dos veces, una para el asunto y otra para la fecha de los correos electrónicos. Como resultado de ejecutar el método ListMessages con la solicitud pasada, obtendremos una lista de mensajes con el asunto que contiene la palabra “Report” que fueron recibidos en la fecha especificada o después. Al mismo tiempo, los resultados estarán ordenados por asunto en orden ascendente. Esto significa que los mensajes se ordenarán alfabéticamente de A a Z, dependiendo de su asunto. Además, los resultados se ordenarán por fecha en orden descendente. Esto significa que las publicaciones se ordenarán de las más recientes a las más antiguas.