Trabajando con mensajes del servidor
Obteniendo Información del Buzón
Podemos obtener información sobre el buzón, como el número de mensajes y el tamaño del buzón, usando los métodos GetMailBoxSize() y GetMailBoxInfo().
- El método GetMailBoxSize() devuelve el tamaño del buzón en bytes.
- El método GetMailBoxInfo() devuelve un objeto de tipo Pop3MailBoxInfo.
También es posible obtener el número de mensajes usando la propiedad MessageCount y el tamaño usando la propiedad OccupiedSize. El siguiente código de ejemplo muestra cómo obtener información sobre el buzón. Muestra cómo:
- Cree un Pop3Client.
- Conectar a un servidor POP3.
- Obtener el tamaño del buzón.
- Obtener información del buzón.
- Obtener el número de mensajes en el buzón.
- Obtener el tamaño ocupado.
Obtener recuento de correos en el buzón
El siguiente fragmento de código muestra cómo contar los mensajes de correo en un buzón.
Aspose.Email permite a los desarrolladores trabajar con correos electrónicos de muchas maneras diferentes. Por ejemplo, pueden recuperar la información del encabezado antes de decidir si descargar un correo. O pueden recuperar correos de un servidor y guardarlos sin analizarlos (más rápido) o después de analizarlos (más lento). Este artículo muestra cómo recuperar y convertir correos electrónicos.
Recuperando Información de los Encabezados de Correo
Los encabezados de correo pueden brindarnos información sobre un mensaje que podemos usar para decidir si recuperar o no el mensaje completo. Normalmente, la información del encabezado contiene remitente, asunto, fecha de recepción, etc. (Los encabezados de correo se describen con detalle en Personalizando encabezados de correo. Ese tema se centra en el envío de correo con SMTP, pero la información de los encabezados sigue siendo válida para correos POP3). Los siguientes ejemplos muestran cómo recuperar encabezados de correo desde un servidor POP3 mediante el número de secuencia del mensaje.
Recuperando Mensajes de Correo Electrónico
El componente de clase Aspose.Email.Pop3 proporciona la capacidad de recuperar mensajes de correo desde el servidor POP3 y analizarlos en una instancia de MailMessage con la ayuda de componentes MailMessage. La clase MailMessage contiene varias propiedades y métodos para manipular el contenido del correo. Usando la función FetchMessage de la clase Pop3Client, puede obtener una instancia de MailMessage directamente del servidor POP3. El siguiente fragmento de código muestra cómo recuperar un mensaje de correo completo desde el servidor POP3.
Recuperar información resumida del mensaje usando Id único
El cliente POP3 de la API puede recuperar información resumida del mensaje desde el servidor usando el ID único del mensaje. Esto brinda acceso rápido a la información corta del mensaje sin primero recuperar el mensaje completo del servidor. El siguiente fragmento de código muestra cómo recuperar información resumida del mensaje.
Listar mensajes con MultiConnection
Para operaciones con carga pesada, Aspose.Email ofrece la propiedad ‘use_multi_connection’ del Pop3Client clase para usar múltiples conexiones mientras se recuperan correos. Sin embargo, usar este modo no necesariamente conduce a un aumento del rendimiento. El siguiente fragmento de código le muestra cómo establecer una conexión a un servidor POP3, configurar el cliente para permitir hasta 5 conexiones concurrentes y habilitar el modo multiconexión para obtener información sobre los mensajes presentes en el servidor:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()
Obteniendo Mensajes del Servidor y Guardándolos en Disco
Guardar Mensaje en Disco sin Analizar
Si desea descargar mensajes de correo desde el servidor POP3 sin analizarlos, use la función SaveMessage de la clase Pop3Client. La función SaveMessage no analiza el mensaje, por lo que es más rápida que la función FetchMessage. El siguiente fragmento de código muestra cómo guardar un mensaje por su número de secuencia, en este caso el número 1. El método SaveMessage guarda el mensaje en el formato EML original sin analizarlo.
Analizar Mensaje Antes de Guardar
Use el método ‘fetch_message’ del objeto cliente creado usando Pop3Client clase para recuperar el mensaje con un número de secuencia específico. El siguiente ejemplo de código demuestra cómo recuperar un mensaje específico y guardarlo usando su asunto como nombre de archivo llamando al método ‘save’ del 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)
Filtrando Mensajes por Remitente, Destinatario o Fecha
La clase Pop3Client, descrita en Conectarse a un servidor POP3, proporciona el método list_messages() que obtiene todos los mensajes de un buzón. Para obtener solo los mensajes que cumplan cierta condición, use el método sobrecargado ListMessages() que acepta un MailQuery como argumento. La clase MailQuery ofrece varias propiedades para especificar las condiciones de la consulta, por ejemplo, fecha, asunto, remitente, destinatario, etc. La clase MailQueryBuilder se usa para construir la expresión de búsqueda. Primero se establecen todas las condiciones y restricciones, y luego se llena el MailQuery con la consulta desarrollada por MailQueryBuilder. El objeto de la clase MailQuery es usado por Pop3Client para extraer la información filtrada del servidor. Este artículo muestra cómo filtrar mensajes de correo de un buzón. El primer ejemplo ilustra cómo filtrar mensajes por fecha y asunto. También mostramos cómo filtrar por otros criterios y cómo crear consultas más complejas. Además, muestra la aplicación del filtro de fecha y hora para recuperar correos específicos del buzón. Asimismo, muestra cómo aplicar filtrado sensible a mayúsculas/minúsculas.
Filtrando Mensajes del Buzón
Para filtrar mensajes de un buzón:
- Conéctese e inicie sesión en un servidor POP3.
- Cree una instancia de MailQuery y establezca las propiedades deseadas.
- Llame al método Pop3Client.list_messages(MailQuery query) y pase el MailQuery en los parámetros para obtener solo los mensajes filtrados.
El siguiente fragmento de código le muestra cómo conectarse a un buzón POP3 y obtener los mensajes que llegaron hoy y que tienen la palabra "newsletter" en el asunto.
Obteniendo Mensajes que Cumplen Criterios Específicos
Aspose.Email también permite construir criterios de búsqueda complejos para consultar y filtrar mensajes de correo. Para ello use la MailQueryBuilder clase y sus propiedades. Los criterios de obtención son los siguientes:
- Obtener mensajes por fecha de entrega.
- Obtener mensajes dentro de un rango.
- Obtener mensajes de un remitente específico.
- Obtener mensajes de un dominio específico.
- Obtener mensajes dirigidos a un destinatario específico.
Fecha de hoy
Para obtener mensajes por fecha de entrega, use la propiedad ‘internal_date’ como se muestra en el siguiente ejemplo de código:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
Rango de fechas
Para obtener mensajes dentro de un rango de fechas, use la misma propiedad ‘internal_date’ especificando el rango de fechas como se muestra en el siguiente ejemplo de código:
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))
Remitente Específico
Para obtener mensajes de un remitente específico, use la propiedad ‘from_address’ como se muestra en el siguiente ejemplo de código:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
Dominio específico
Para obtener mensajes de un dominio específico, use la propiedad ‘from_address’ como se muestra en el siguiente ejemplo de código:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Destinatario específico
Para obtener mensajes dirigidos a un destinatario específico, use la propiedad ’to’ como se muestra en el siguiente ejemplo de código:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Construir consultas complejas
A veces es necesario satisfacer más de una consulta. Aspose.Email lo posibilita combinando consultas en varias sentencias. Cree una MailQueryBuilder objeto y usar sus propiedades para construir consultas específicas.
Combinar consultas con AND
El siguiente fragmento de código muestra cómo combinar consultas con 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 OR.
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
Aplicando Filtros Sensibles a Mayú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)