Filtrar Mensagens do Servidor Usando Cliente IMAP

A classe ImapClient fornece o método ListMessages() que obtém todas as mensagens de uma caixa de entrada. Para obter apenas mensagens que correspondem a alguma condição, use o método sobrecarregado ListMessages() que recebe MailQuery como argumento. A classe MailQuery fornece várias propriedades para especificar as condições, por exemplo, data, assunto, remetente, destinatário e assim por diante. O primeiro exemplo ilustra como filtrar mensagens com base na data e no assunto. Também mostramos como filtrar com base em outros critérios e como construir consultas mais complexas. A API também fornece a capacidade de aplicar critérios de pesquisa sensíveis a maiúsculas e minúsculas para corresponder a critérios de filtragem exatos. A API também permite especificar a codificação da string de pesquisa para filtrar mensagens da caixa de entrada.

Filtrando Mensagens da Caixa de Entrada

  1. Conectar e fazer login em um servidor IMAP
  2. Crie uma instância de MailQuery e defina as propriedades
  3. Chame o método ImapClient.ListMessages(MailQuery query) e passe o MailQuery com os parâmetros para obter apenas mensagens filtradas.

O seguinte trecho de código mostra como se conectar a uma caixa de entrada IMAP e obter mensagens que chegaram hoje e têm a palavra “newsletter” no assunto.

Obter Mensagens que Atendem a Critérios Específicos

Os exemplos de código acima filtram mensagens com base no assunto e na data do e-mail. Podemos usar outras propriedades para definir outras condições suportadas também. Abaixo estão alguns exemplos de como definir as condições usando MailQuery. Os trechos de código a seguir mostram como filtrar e-mails em:

  1. Data de hoje.
  2. Um intervalo de datas.
  3. De um remetente específico.
  4. De um domínio específico.
  5. De um destinatário específico.

Data de Hoje

O seguinte trecho de código mostra como filtrar e-mails na Data de Hoje.

Intervalo de Datas

O seguinte trecho de código mostra como filtrar e-mails no intervalo de datas.

Remetente Específico

O seguinte trecho de código mostra como filtrar e-mails de um remetente específico.

Domínio Específico

O seguinte trecho de código mostra como filtrar e-mails de um domínio específico.

Destinatário Específico

O seguinte trecho de código mostra como filtrar e-mails de um destinatário específico.

Construindo Consultas Complexas

Se diferentes propriedades de MailQueryBuilder forem definidas em declarações separadas, todas as condições serão correspondidas. Por exemplo, se quisermos obter mensagens entre um intervalo de datas e de um host específico, precisamos escrever três declarações.

Combinando Consultas com AND

O seguinte trecho de código mostra como combinar consultas com AND.

Combinando Consultas com OR

MailQueryBuilder fornece o método Or() que recebe duas instâncias de MailQuery como parâmetros. Ele obtém as mensagens que correspondem a qualquer uma das duas condições especificadas. O seguinte trecho de código mostra como filtrar mensagens que têm “teste” no assunto ou “noreply@host.com” como remetente. O seguinte trecho de código mostra como combinar consultas com OR.

Filtragem com base em InternalDate

As mensagens podem ser extraídas do servidor com base no InternalDate, no entanto, às vezes o servidor não retorna todas as mensagens visíveis na caixa de entrada. O motivo pode ser o fuso horário do servidor, já que pode não ser UTC para todos os servidores como o Gmail. Aspose envia comandos como 008 SEARCH ON 4-May-2014 de acordo com o protocolo IMAP, no entanto, o resultado pode diferir devido às configurações de fuso horário do servidor. Um novo membro é adicionado em ImapMessageInfo como InternalDate, o que ajuda ainda mais na filtragem das mensagens. O seguinte trecho de código mostra o uso de InternalDate para filtrar mensagens.

Filtragem de E-mails com Sensibilidade a Maiúsculas e Minúsculas

O seguinte trecho de código mostra como usar filtragem de e-mails com sensibilidade a maiúsculas e minúsculas.

Especificar Codificação para o Construtor da Consulta

O construtor ImapQueryBuilder da API pode ser usado para especificar a codificação da string de pesquisa. Isso também pode ser definido usando a propriedade DefaultEncoding do MailQueryBuilder. O seguinte trecho de código mostra como especificar a codificação para o construtor da consulta.

Filtrar Mensagens com Suporte a Paginação

O ImapClient fornece a capacidade de procurar mensagens na caixa de entrada e listá-las com suporte a paginação. O seguinte trecho de código mostra como filtrar mensagens com suporte a paginação.

Filtrar Mensagens com Flag Personalizada

Filtrar Mensagens usando Pesquisa Personalizada

Por exemplo, a norma RFC 3501 não permite a pesquisa de mensagens com base na existência de anexos nas mensagens. Mas o Gmail fornece Extensões IMAP que permitem realizar essa pesquisa. O próximo trecho de código mostra como fazer uma consulta correspondente.

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

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