Conectar a servidores IMAP en Python

Aspose.Email para Python via .NET incluye el ImapClient clase, que permite a los desarrolladores conectar a servidores de correo usando IMAP (Internet Message Access Protocol). Esta clase permite una gestión segura y eficiente del correo electrónico dentro de aplicaciones Python, incluyendo la recuperación, lectura, movimiento, eliminación y actualización de mensajes de correo.

Usando el cliente IMAP, puede autenticar usuarios, gestionar carpetas del buzón, conectarse mediante SSL, establecer tiempos de espera personalizados y acceder a cuentas de correo a través de servidores proxy o autenticación CRAM-MD5.

Conexión IMAP básica

Para conectarse a un servidor IMAP usando Aspose.Email, siga estos tres simples pasos:

  1. Cree una instancia de la ImapClient clase.
  2. Especifique el nombre de host, puerto, nombre de usuario y contraseña.
  3. Especifique la opción de seguridad deseada.

El siguiente ejemplo de código muestra cómo conectarse al servidor IMAP programáticamente:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")

Habilitar SSL para conexiones IMAP

Para conectarse a un servidor IMAP con SSL habilitado, establezca el security_options propiedad para SSLImplicit:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")

# Set the security mode to implicit
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT

Conectar vía proxy SOCKS

Aspose.Email soporta SOCKS versiones 4, 4a y 5 para conexiones mediante proxy. Siga los siguientes pasos para conectarse a través de un proxy SOCKS:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", "username", "password")
client.security_options = ae.clients.SecurityOptions.AUTO

proxy = ae.clients.SocksProxy("192.168.203.142", 1080, ae.clients.SocksVersion.SOCKS_V5)
client.proxy = proxy

client.select_folder("Inbox")

Conectándose al servidor vía proxy HTTP

Aspose.Email también permite conexiones IMAP a través de un proxy HTTP:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", "username", "password")
client.proxy = ae.clients.HttpProxy("18.222.124.59", 8080)
client.select_folder("Inbox")

Acceso a buzón de solo lectura

Para evitar cambios en el contenido del buzón, habilite el modo de solo lectura. El read_only la propiedad establecida en True indica que no se permiten cambios. El siguiente ejemplo de código muestra cómo usar esta propiedad en un proyecto:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT
client.read_only = True

Usar autenticación CRAM-MD5

Para mayor seguridad, configure el cliente para usar autenticación CRAM-MD5:

El siguiente ejemplo de código muestra cómo configurar el cliente para aceptar CRAM-MD5 como uno de los métodos de autenticación soportados al conectarse a un servidor IMAP:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")
client.allowed_authentication = ae.clients.imap.ImapKnownAuthenticationType.CRAM_MD5

Establecer tiempo de espera de operación

Evite que el cliente espere indefinidamente estableciendo un tiempo de espera (en milisegundos):

El siguiente fragmento de código muestra cómo establecer un período de tiempo de espera de 60,000 milisegundos (60 segundos) para que el cliente espere la respuesta del servidor:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
#  60 seconds
client.timeout = 60000

Establecer tiempo de espera de saludo

Controla cuánto tiempo espera el cliente durante el apretón de manos inicial con el servidor de correo.

El siguiente fragmento de código muestra cómo restringir el tiempo de espera de saludo usando la propiedad greeting_timeout de la ImapClient clase:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")

client.greeting_timeout = 4000
client.select_folder(ae.clients.imap.ImapFolderInfo.IN_BOX)

Usar TLS con el cliente IMAP

Aspose.Email soporta TLS y SSL para comunicación segura. Use el supported_encryption propiedad para definir versiones de protocolo aceptables.

NOTA: solo puede establecer aquellas versiones del protocolo que son compatibles con .NET Framework. Si algunas versiones del protocolo no son compatibles con su versión actual de .NET Framework, se ignorarán y omitirán. Esto puede llevar a una degradación del nivel de seguridad TLS. En este caso, no se generarán excepciones. Por favor, use el método ‘set_supported_encryption_unsafe(value)’ si desea establecer los protocolos sin ninguna verificación de compatibilidad.

El ejemplo de código a continuación le muestra cómo establecer TLS 1.3 para ImapClient instancia de clase.

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS13

En caso de que un protocolo de cifrado especificado no sea compatible con la versión actual de .NET Framework, la diferencia de comportamiento entre el método set_supported_encryption_unsafe(value) y la propiedad supported_encryption es la siguiente:

  • Si se usa la propiedad supported_encryption, el cliente de correo degrada el protocolo de cifrado a un nivel compatible.
  • Si se usa el método set_supported_encryption_unsafe(value), el cliente de correo lanza excepciones.

Validar credenciales del servidor IMAP

Para establecer una conexión segura a un servidor IMAP antes de realizar más acciones, se verifican y validan las credenciales del usuario. El método validate_credentials de la ImapClient la clase ayuda a comprobar si el nombre de usuario y contraseña proporcionados son correctos. Si las credenciales son válidas, el cliente puede autenticarse con éxito en el servidor IMAP. El siguiente ejemplo de código muestra cómo implementar este método en su proyecto:

import aspose.email as ae

with ae.clients.imap.ImapClient("your imap server", 993, "your username", "your password", ae.clients.SecurityOptions.AUTO) as client:
    client.timeout = 4000

    if client.validate_credentials():
        # Further actions

Habilitar registro de actividad IMAP

El registro de actividad implica registrar conexiones al servidor, detalles de transmisión de mensajes enviados y recibidos, mensajes de error durante el procesamiento de correo electrónico y cualquier otra acción realizada por el cliente o el servidor. Para rastrear la actividad del cliente IMAP e interacciones con el servidor, use el siguiente ejemplo de código que utiliza la propiedad log_file_name de la ImapClient clase para registrar la información en el archivo de registro especificado:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

# Set the path to the log file using the LogFileName property.
client.log_file_name = "C:\\Aspose.Email.IMAP.log"
# Set the UseDateInLogFileName property if it is necessary.
client.use_date_in_log_file_name = False