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

Aspose.Email для Python через .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")

Доступ лише для читання до поштової скриньки

Щоб запобігти змінам у вмісті поштової скриньки, увімкніть режим лише для читання. The 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