Recuperando Emails de um Servidor POP3

Salvar emails no disco sem análise

Para baixar mensagens de email de um servidor POP3 sem análise, você pode usar o save_message método da Aspose.Email Pop3Client classe. O trecho de código a seguir ilustra como salvar uma mensagem usando seu número de sequência, neste caso, número 1. O save_message método preserva o formato EML original sem análise:

Analisar mensagens antes de salvar

Você pode recuperar uma mensagem de email específica usando o fetch_message método do Pop3Client classe, especificando o número de sequência desejado para o objeto cliente. O exemplo de código a seguir mostra como buscar uma mensagem específica e então salvá‑la usando seu assunto como nome de arquivo, chamando o save método no objeto msg:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

Filtrar emails do servidor por critério

O Aspose.Email Pop3Client classe fornece o list_messages() 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 list_messages(query) método que recebe MailQuery como argumento. O MailQuery classe fornece várias propriedades para especificar as condições da consulta, por exemplo, data, assunto, remetente, destinatário e assim por diante.

Para construir a expressão de pesquisa, use o MailQueryBuilder classe. Primeiro, defina todas as condições e restrições necessárias e, em seguida, preencha o objeto MailQuery com a consulta criada pelo MailQueryBuilder. O Pop3Client utiliza este objeto MailQuery para buscar informações filtradas do servidor.

O exemplo de código a seguir demonstra como filtrar e recuperar emails de uma conta Gmail com base em vários critérios, incluindo assunto, data interna, remetente e destinatário. Também mostra filtragem sensível a maiúsculas e minúsculas e demonstra como construir consultas complexas de forma eficiente.

  1. Estabeleça uma conexão ao servidor POP3 do Gmail usando o Pop3Client classe com o endereço do servidor especificado, porta, nome de usuário e senha. As opções de segurança são definidas como AUTO para conexão segura.
  2. Crie uma instância do MailQueryBuilder para construir os critérios de pesquisa para filtragem de emails.
  3. Filtrando por Assunto:
    • Emails contendo "Newsletter" na linha de assunto são especificados como condição de filtro.
  4. Filtrando por Data interna:
    • Um filtro é definido para emails recebidos na data atual.
    • Um filtro adicional é adicionado para recuperar emails recebidos na última semana.
  5. Filtrando por Remetente:
    • Filtros são aplicados para procurar emails de um endereço específico (saqib.razzaq@127.0.0.1) e incluir emails de um domínio específico (SpecificHost.com).
  6. Filtrando por Destinatário:
    • Um filtro é especificado para encontrar emails enviados a um destinatário específico.
  7. Combinar consultas usando o operador OR para buscar emails que correspondam a um determinado assunto ou sejam enviados de um endereço específico.
  8. Filtragem sensível a maiúsculas e minúsculas:
    • Um filtro sensível a maiúsculas e minúsculas para o assunto contendo "Newsletter" é especificado (indicado pelo parâmetro True).
  9. Listando mensagens:
    • O método list_messages() é chamado com a consulta construída para recuperar as mensagens filtradas da caixa de correio.
  10. Finalmente, imprima a contagem das mensagens filtradas.

Filtrar Emails por Data

Para buscar mensagens por data de entrega, use o internal_date propriedade como mostrado no exemplo de código abaixo:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Filtrar Emails por Intervalo de Datas

Para buscar mensagens dentro de um intervalo de datas, use o mesmo internal_date propriedade que especifica o intervalo de datas como mostrado no exemplo de código abaixo:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

Filtrar Emails por Remetente

Para buscar mensagens de um remetente específico, use o from_address propriedade como mostrado no exemplo de código abaixo:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Filtrar Emails por Domínio

Para buscar mensagens de um domínio específico, use o from_address propriedade como mostrado no exemplo de código abaixo:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

Filtrar Emails por Destinatário

Para buscar mensagens para um destinatário específico, use o to propriedade como mostrado no exemplo de código abaixo:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

Construa Consultas de Busca Complexas

Às vezes é necessário satisfazer mais de uma consulta. Aspose.Email permite combinar consultas em várias instruções. Crie um MailQueryBuilder objeto e usar suas propriedades para construir consultas específicas.

Combinar consultas com AND

O trecho de código a seguir mostra como combinar consultas com o operador AND:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

Combinar consultas com OR

O trecho de código a seguir mostra como combinar consultas com o operador OR:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

Aplicar filtros sensíveis a maiúsculas e minúsculas

A API também fornece a capacidade de filtrar emails da caixa de correio com base em um critério sensível a maiúsculas e minúsculas. Os seguintes métodos da StringComparisonField classe fornece a capacidade de pesquisar emails especificando flags sensíveis a maiúsculas e minúsculas:

Método Aspose.Email.StringComparisonField.contains(value, ignore_case) Método Aspose.Email.StringComparisonField.equals(value, ignore_case) Método Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Método Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

O trecho de código a seguir mostra como implementar esse recurso em seu projeto:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)