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:
- Utwórz instancję ImapClient klasa.
- Określ nazwę hosta, port, nazwę użytkownika i hasło.
- 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