Połączenie z serwerami IMAP w Pythonie

Aspose.Email dla Pythona przez .NET zawiera ImapClient klasa, która pozwala programistom na połączenie z serwerami pocztowymi przy użyciu IMAP (Internet Message Access Protocol). Ta klasa umożliwia bezpieczne i wydajne zarządzanie e‑mailami w aplikacjach Python, w tym pobieranie, odczyt, przenoszenie, usuwanie i aktualizację wiadomości.

Korzystając z klienta IMAP, możesz uwierzytelnić użytkowników, zarządzać folderami skrzynki, łączyć się przez SSL, ustawiać własne limity czasu oraz uzyskiwać dostęp do kont e‑mail przez serwery proxy lub uwierzytelnianie CRAM-MD5.

Podstawowe połączenie IMAP

Aby połączyć się z serwerem IMAP przy użyciu Aspose.Email, wykonaj te trzy proste kroki:

  1. Utwórz instancję ImapClient klasa.
  2. Określ nazwę hosta, port, nazwę użytkownika i hasło.
  3. Określ żądaną opcję bezpieczeństwa.

Poniższy przykład kodu pokazuje, jak programowo połączyć się z serwerem IMAP:

import aspose.email as ae

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

Włącz SSL dla połączeń IMAP

Aby połączyć się z serwerem IMAP obsługującym SSL, ustaw security_options właściwość do 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

Połączenie przez proxy SOCKS

Aspose.Email obsługuje wersje SOCKS 4, 4a i 5 dla połączeń przez proxy. Użyj następujących kroków, aby połączyć się przez 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")

Łączenie się z serwerem przez proxy HTTP

Aspose.Email umożliwia także połączenia IMAP przez 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")

Dostęp do skrzynki pocztowej w trybie tylko do odczytu

Aby zapobiec zmianom w zawartości skrzynki pocztowej, włącz tryb tylko do odczytu. read_only ustawienie właściwości na True wskazuje, że zmiany nie są dozwolone. Poniższy przykład kodu pokazuje, jak używać tej właściwości w projekcie:

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

Użyj uwierzytelniania CRAM-MD5

Dla zwiększenia bezpieczeństwa, skonfiguruj klienta do używania uwierzytelniania CRAM-MD5:

Poniższy przykład kodu demonstruje, jak skonfigurować klienta, aby akceptował CRAM-MD5 jako jedną z obsługiwanych metod uwierzytelniania przy łączeniu się z serwerem 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

Ustaw limit czasu operacji

Zapobiegaj nieograniczonemu czekaniu klienta, ustawiając limit czasu (w milisekundach):

Poniższy fragment kodu pokazuje, jak ustawić okres limitu czasu 60 000 milisekund (60 sekund) dla klienta, aby czekał na odpowiedź serwera:

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

Ustaw limit czasu powitania

Kontroluj, jak długo klient czeka podczas początkowego przywitania z serwerem poczty.

Poniższy fragment kodu pokazuje, jak ograniczyć czas oczekiwania na powitanie za pomocą właściwości greeting_timeout klasy ImapClient klasa:

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)

Użyj TLS z klientem IMAP

Aspose.Email obsługuje TLS i SSL do bezpiecznej komunikacji. Użyj supported_encryption właściwość do określenia akceptowalnych wersji protokołu.

UWAGA: możesz ustawiać tylko te wersje protokołu, które są obsługiwane przez .NET Framework. Jeśli niektóre wersje protokołu nie są obsługiwane przez Twoją aktualną wersję .NET Framework, zostaną zignorowane i pominięte. Może to doprowadzić do obniżenia poziomu bezpieczeństwa TLS. W takim przypadku nie będą generowane wyjątki. Użyj metody ‘set_supported_encryption_unsafe(value)’, jeśli chcesz ustawić protokoły bez żadnych sprawdzeń kompatybilności.

Poniższy przykład kodu pokazuje, jak ustawić TLS 1.3 dla ImapClient instancję klasy.

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

W przypadku, gdy określony protokół szyfrowania nie jest obsługiwany w bieżącej wersji .NET Framework, różnica w zachowaniu pomiędzy metodą set_supported_encryption_unsafe(value) a właściwością supported_encryption jest następująca:

  • Jeśli użyta zostanie właściwość supported_encryption, klient e‑mail obniża protokół szyfrowania do obsługiwanego poziomu.
  • Jeśli użyta zostanie metoda set_supported_encryption_unsafe(value), klient e‑mail zgłasza wyjątki.

Walidacja poświadczeń serwera IMAP

Aby nawiązać bezpieczne połączenie z serwerem IMAP przed podjęciem dalszych działań, poświadczenia użytkownika są sprawdzane i weryfikowane. Metoda validate_credentials klasy ImapClient klasa pomaga sprawdzić, czy podana nazwa użytkownika i hasło są prawidłowe. Jeśli poświadczenia są rzeczywiście ważne, klient może pomyślnie uwierzytelnić się na serwerze IMAP. Poniższy przykład kodu pokazuje, jak zaimplementować tę metodę w projekcie:

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

Włącz rejestrowanie aktywności IMAP

Rejestrowanie aktywności obejmuje zapisywanie połączeń z serwerem, szczegółów transmisji wysłanych i odebranych wiadomości, komunikatów o błędach podczas przetwarzania e‑mail oraz wszelkich innych działań wykonywanych przez klienta lub serwer. Aby śledzić aktywność klienta IMAP i interakcje z serwerem, użyj poniższego przykładu kodu, który wykorzystuje właściwość log_file_name klasy ImapClient klasa służąca do logowania informacji do określonego pliku dziennika:

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