Recuperando correos electrónicos del servidor POP3
Guardar correos en disco sin parsear
Para descargar mensajes de correo desde un servidor POP3 sin analizar, puede usar el save_message método de Aspose.Email Pop3Client clase. El siguiente fragmento de código ilustra cómo guardar un mensaje usando su número de secuencia, en este caso, el número 1. El save_message método preserva el formato EML original sin analizar:
Analizar mensajes antes de guardar
Puede recuperar un mensaje de correo específico usando el fetch_message método del Pop3Client clase, especificando el número de secuencia deseado para el objeto cliente. El siguiente ejemplo de código muestra cómo obtener un mensaje en particular y luego guardarlo usando su asunto como nombre de archivo llamando al save método en el 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 correos del servidor por criterios
El Aspose.Email Pop3Client class proporciona el list_messages() 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 list_messages(query) método que toma MailQuery como argumento. El MailQuery clase que brinda varias propiedades para especificar las condiciones de la consulta, por ejemplo, fecha, asunto, remitente, destinatario, etc.
Para construir la expresión de búsqueda, use la MailQueryBuilder clase. Primero, defina todas las condiciones y restricciones necesarias, y luego rellene el objeto MailQuery con la consulta creada por la MailQueryBuilder. Pop3Client utiliza este objeto MailQuery para obtener información filtrada del servidor.
El siguiente ejemplo de código demuestra cómo filtrar y recuperar correos de una cuenta Gmail basándose en varios criterios, incluidos asunto, fecha interna, remitente y destinatario. También muestra filtrado sensible a mayúsculas/minúsculas y demuestra cómo construir consultas complejas de forma eficiente.
- Establezca una conexión al servidor Gmail POP3 usando la Pop3Client clase con la dirección del servidor, puerto, nombre de usuario y contraseña especificados. Las opciones de seguridad se configuran en AUTO para una conexión segura.
- Cree una instancia de la MailQueryBuilder para construir los criterios de búsqueda para filtrar correos.
- Filtrado por Asunto:
- Se especifica como condición de filtro los correos que contienen "Newsletter" en la línea de asunto.
- Filtrado por Fecha interna:
- Se establece un filtro para correos recibidos en la fecha actual.
- Se agrega un filtro adicional para recuperar correos recibidos durante la última semana.
- Filtrado por Remitente:
- Se aplican filtros para buscar correos de una dirección específica (saqib.razzaq@127.0.0.1) e incluir correos de un dominio particular (SpecificHost.com).
- Filtrado por Destinatario:
- Se especifica un filtro para encontrar correos enviados a un destinatario específico.
- Combinar consultas usando el operador OR para buscar correos que coincidan con un asunto dado o que sean enviados desde una dirección específica.
- Filtrado sensible a mayúsculas/minúsculas:
- Se especifica un filtro sensible a mayúsculas/minúsculas para el asunto que contiene "Newsletter" (indicado por el parámetro True).
- Listando mensajes:
- El método list_messages() se llama con la consulta construida para recuperar los mensajes filtrados del buzón.
- Finalmente, imprima el recuento de los mensajes filtrados.
Filtrar correos electrónicos por fecha
Para obtener mensajes por fecha de entrega, use el internal_date propiedad como se muestra en el ejemplo de código a continuación:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
Filtrar correos electrónicos por rango de fechas
Para obtener mensajes dentro de un rango de fechas, use el mismo internal_date propiedad que especifica el rango de fechas como se muestra en el ejemplo de código a continuación:
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 correos electrónicos por remitente
Para obtener mensajes de un remitente específico, use el from_address propiedad como se muestra en el ejemplo de código a continuación:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
Filtrar correos electrónicos por dominio
Para obtener mensajes de un dominio específico, use el from_address propiedad como se muestra en el ejemplo de código a continuación:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Filtrar correos electrónicos por destinatario
Para obtener mensajes para un destinatario específico, use el to propiedad como se muestra en el ejemplo de código a continuación:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Crear consultas de búsqueda complejas
A veces es necesario satisfacer más de una consulta. Aspose.Email hace posible combinar consultas en varias sentencias. Crear un MailQueryBuilder objeto y usar sus propiedades para construir consultas específicas.
Combinar consultas con AND
El siguiente fragmento de código le muestra cómo combinar consultas con el 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 con OR
El siguiente fragmento de código le muestra cómo combinar consultas con el 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 sensibles a mayúsculas/minúsculas
La API también brinda la capacidad de filtrar correos del buzón basándose en criterios sensibles a mayúsculas/minúsculas. Los siguientes métodos de la StringComparisonField clase que brinda la capacidad de buscar correos especificando indicadores sensibles a mayúsculas/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)
El siguiente fragmento de código le muestra cómo implementar esta capacidad en su proyecto:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)