Filtragem de E‑mail IMAP - Métodos, Critérios e Exemplos de Código
Filtragem Básica de Mensagens
O ImapClient classe fornece o ListMessages() método que obtém todas as mensagens de uma caixa de correio. Para obter apenas mensagens que correspondam a alguma condição, use o sobrecarregado ListMessages() método que recebe MailQuery como argumento. O MailQuery a classe 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 por outros critérios e como construir consultas mais complexas. A API também oferece a capacidade de aplicar critérios de busca sensíveis a maiúsculas/minúsculas para corresponder exatamente aos critérios de filtragem. A API também permite especificar a codificação da string de pesquisa para filtrar mensagens da caixa de correio.
Filtrar Mensagens da Caixa de Correio
- Conectar e fazer login em um servidor IMAP
- Crie uma instância do MailQuery e definir as propriedades
- Chame o ImapClient.ListMessages(MailQuery query) método e passar o MailQuery com os parâmetros para obter apenas mensagens filtradas.
O trecho de código a seguir mostra como conectar a uma caixa de correio IMAP e obter mensagens que chegaram hoje e têm a palavra "newsletter" no assunto.
Filtrar Mensagens por Critérios Específicos
Os exemplos de código acima filtra mensagens com base no assunto e data do e‑mail. Também podemos usar outras propriedades para definir outras condições suportadas. Abaixo estão alguns exemplos de definição de condições usando MailQuery. Os trechos de código a seguir mostram como filtrar e‑mails por:
- Data de hoje.
- Um intervalo de datas.
- De um remetente específico.
- De um domínio específico.
- De um destinatário específico.
Data de Hoje
O trecho de código a seguir mostra como filtrar e‑mails pela data de hoje.
Intervalo de Datas
O trecho de código a seguir mostra como filtrar e‑mails por intervalo de datas.
Remetente Específico
O trecho de código a seguir mostra como filtrar e‑mails por um remetente específico.
Domínio Específico
O trecho de código a seguir mostra como filtrar e‑mails por um domínio específico.
Destinatário Específico
O trecho de código a seguir mostra como filtrar e‑mails por um destinatário específico.
Construção Avançada de Consultas
Se diferentes MailQueryBuilder as propriedades são definidas em declarações separadas, então todas as condições seriam atendidas. Por exemplo, se quisermos obter mensagens entre um intervalo de datas e de um host específico, precisamos escrever três declarações.
Combinar consultas com AND
O trecho de código a seguir mostra como combinar consultas com AND.
Combinar consultas com OR
MailQueryBuilder fornece o Or() método que aceita dois MailQuery instâncias como parâmetros. Ela obtém as mensagens que correspondem a qualquer uma das duas condições especificadas. O trecho de código a seguir mostra como filtrar mensagens que têm “test” no assunto ou “noreply@host.com” como remetente. O trecho de código a seguir mostra como combinar consultas com OR.
Filtragem Baseada em InternalDate
Mensagens podem ser extraídas do servidor com base no InternalDate, porém às vezes o servidor não retorna todas as mensagens visíveis na caixa de entrada. Isso pode ser devido ao fuso horário do servidor, pois pode não ser UTC para todos os servidores como Gmail. Aspose envia comandos como 008 SEARCH ON 4-May-2014 de acordo com o protocolo IMAP no entanto, o resultado pode variar devido às configurações de fuso horário do servidor. Um novo membro foi adicionado em ImapMessageInfo como InternalDate que auxilia ainda mais na filtragem das mensagens. O trecho de código a seguir mostra o uso de InternalDate para filtrar mensagens.
Filtragem Sensível a Maiúsculas/Minúsculas
O trecho de código a seguir mostra como usar filtragem de e‑mails sensível a maiúsculas e minúsculas.
Especificar Codificação para o Construtor de Consultas
As APIs ImapQueryBuilder construtor pode ser usado para especificar a Codificação da string de pesquisa. Isso também pode ser definido usando o DefaultEncoding propriedade do MailQueryBuilder. O trecho de código a seguir mostra como especificar a codificação para o construtor de consultas.
Opções Personalizadas de Filtragem
Filtrar Mensagens com Flag Personalizado
Busca Personalizada para Filtragem
Por exemplo, o padrão 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 tal 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);
Filtrar Mensagens com Suporte a Paginação
O ImapClient fornece a capacidade de pesquisar mensagens na caixa de correio e listá‑las com suporte a paginação. O trecho de código a seguir mostra como filtrar mensagens com suporte a paginação.