Подключение к IMAP‑серверу в Python

Aspose.Email for Python via .NET включает ImapClient класс, позволяющий разработчикам подключаться к почтовым серверам с использованием IMAP (Internet Message Access Protocol). Этот класс обеспечивает безопасное и эффективное управление электронной почтой в Python‑приложениях, включая получение, чтение, перемещение, удаление и обновление сообщений.

С помощью IMAP‑клиента вы можете аутентифицировать пользователей, управлять папками почтового ящика, подключаться через SSL, устанавливать пользовательские тайм‑ауты и получать доступ к учётным записям электронной почты через прокси‑серверы или аутентификацию CRAM-MD5.

Базовое подключение к IMAP

Чтобы подключиться к IMAP‑серверу с помощью Aspose.Email, выполните эти три простых шага:

  1. Создать экземпляр ImapClient класс.
  2. Укажите имя хоста, порт, имя пользователя и пароль.
  3. Укажите требуемый параметр безопасности.

Пример кода ниже показывает, как программно подключиться к IMAP‑серверу:

import aspose.email as ae

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

Включить SSL для подключений IMAP

Чтобы подключиться к IMAP‑серверу с поддержкой SSL, задайте security_options свойство для 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

Подключение через SOCKS‑прокси

Aspose.Email поддерживает версии SOCKS 4, 4a и 5 для соединений через прокси. Выполните следующие шаги для подключения через 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")

Подключение к серверу через HTTP‑прокси

Aspose.Email также позволяет соединения IMAP через 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")

Доступ к почтовому ящику только для чтения

Чтобы предотвратить изменения в содержимом почтового ящика, включите режим только для чтения. read_only Свойство, установленное в True, указывает, что изменения не разрешены. Ниже приведён пример кода, показывающий, как использовать это свойство в проекте:

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

Использовать аутентификацию CRAM-MD5

Для повышения безопасности настройте клиент на использование аутентификации CRAM-MD5:

Следующий пример кода демонстрирует, как настроить клиент для принятия CRAM-MD5 в качестве одного из поддерживаемых методов аутентификации при подключении к 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

Установить тайм‑аут операции

Предотвратите бесконечное ожидание клиента, установив тайм‑аут (в миллисекундах):

Следующий фрагмент кода показывает, как установить период ожидания в 60 000 миллисекунд (60 секунд) для клиента, ожидающего ответ сервера:

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

Установить тайм‑аут приветствия

Управляйте тем, как долго клиент будет ожидать во время начального рукопожатия с почтовым сервером.

Следующий фрагмент кода показывает, как ограничить время ожидания приветствия, используя свойство greeting_timeout класса. ImapClient класс:

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)

Использование TLS с IMAP‑клиентом

Aspose.Email поддерживает TLS и SSL для безопасной передачи данных. Используйте supported_encryption свойство для определения допустимых версий протокола.

ПРИМЕЧАНИЕ: вы можете задавать только те версии протокола, которые поддерживает .NET Framework. Если некоторые версии протокола не поддерживаются текущей версией .NET Framework, они будут проигнорированы. Это может привести к понижению уровня безопасности TLS. В этом случае исключения не будут генерироваться. Пожалуйста, используйте метод ‘set_supported_encryption_unsafe(value)’, если хотите задать протоколы без проверок совместимости.

Пример кода ниже показывает, как установить TLS 1.3 для ImapClient экземпляр класса.

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

Если указанный протокол шифрования не поддерживается текущей версией .NET Framework, различие в поведении между методом set_supported_encryption_unsafe(value) и свойством supported_encryption следующее:

  • Если используется свойство supported_encryption, почтовый клиент понижает уровень протокола шифрования до поддерживаемого.
  • Если используется метод set_supported_encryption_unsafe(value), почтовый клиент генерирует исключения.

Проверка учётных данных IMAP‑сервера

Чтобы установить безопасное соединение с IMAP‑сервером перед выполнением дальнейших действий, проверяются и валидируются учётные данные пользователя. Метод validate_credentials класса ImapClient класс помогает проверить правильность указанных имени пользователя и пароля. Если учётные данные действительно действительны, клиент может успешно аутентифицироваться на IMAP‑сервере. Ниже приведён пример кода, демонстрирующий, как реализовать этот метод в вашем проекте:

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

Включение журналирования активности IMAP

Ведение журнала активности включает запись подключений к серверу, деталей передачи отправленных и полученных сообщений, сообщений об ошибках при обработке электронной почты и любых других действий, выполненных клиентом или сервером. Чтобы отслеживать активность IMAP‑клиента и его взаимодействие с сервером, используйте следующий пример кода, который использует свойство log_file_name класса. ImapClient класс для записи информации в указанный файл журнала:

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