Połącz się z serwerem SMTP
Połączenie z serwerem SMTP przy użyciu SSL
Aby nawiązać bezpieczne połączenie z serwerem SMTP obsługującym SSL, musisz skonfigurować następujące kluczowe właściwości SmtpClient klasa:
-
Host: Adres serwera SMTP (np. smtp.gmail.com)
-
Port: Port używany do komunikacji z włączonym SSL (zazwyczaj 465 dla SSL niejawnego lub 587 dla SSL/TLS jawnego)
-
Nazwa użytkownika: Nazwa konta używana do uwierzytelniania
-
Hasło: Hasło do konta SMTP
-
Opcje bezpieczeństwa: Typ szyfrowania, które ma być użyte (SSLEXPLICIT, SSLIMPLICIT, itp.)
Poniższy przykład kodu demonstruje, jak skonfigurować i połączyć się z serwerem SMTP z obsługą SSL:
Ustaw limit czasu na odpowiedź powitalną od serwera
Podczas nawiązywania połączenia z serwerem SMTP serwer zazwyczaj wysyła ciąg powitalny po pomyślnym połączeniu. Ta odpowiedź potwierdza, że serwer jest gotowy do kontynuacji komunikacji.
W niektórych scenariuszach klienci poczty działają w trybie automatycznego łączenia, próbując różne kombinacje protokołów bezpieczeństwa i portów (takich jak SSL niejawne lub STARTTLS), aby nawiązać udane połączenie. Jeśli konfiguracja klienta nie odpowiada oczekiwanemu trybowi bezpieczeństwa serwera, serwer nie wyśle ciągu powitalnego. To niezgodność powoduje, że klient czeka do wygaśnięcia ogólnego limitu czasu, zanim spróbuje kolejnej kombinacji — co skutkuje wolnym obsługiwaniem połączeń.
Aby ulepszyć to zachowanie, Aspose.Email udostępnia greeting_timeout właściwość w SmtpClient klasa. Ta właściwość ustawia konkretny limit czasu (w milisekundach) oczekiwania na ciąg powitalny serwera. Jeśli powitanie nie zostanie odebrane w określonym przedziale, klient natychmiast próbuje kolejnej konfiguracji — co znacznie przyspiesza automatyczne procesy łączenia.
Poniższy przykład kodu demonstruje, jak zaimplementować właściwość w projekcie:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient("localhost", 25, "username", "password")
client.greeting_timeout = 4000
Wysyłanie e‑maili przez SMTP przy użyciu proxy SOCKS
Aspose.Email zapewnia obsługę wersji 4, 4a i 5 protokołu proxy SOCKS. Poniższy przykład kodu demonstruje, jak wysłać e‑mail używając SMTP z proxy SOCKS:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient("smtp.domain.com", "username", "password")
client.security_options = ae.clients.SecurityOptions.SSL_IMPLICIT
# proxy address
proxy_address = "192.168.203.142"
#proxy port
proxy_port = 1080
socks_proxy = ae.clients.SocksProxy(proxy_address, proxy_port, ae.clients.SocksVersion.SOCKS_V5)
client.proxy = socks_proxy
client.send(ae.MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy", "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"))
Wysyłanie e‑maili przez SMTP przy użyciu proxy HTTP
Poniższy przykład kodu demonstruje użycie proxy HTTP do wysyłania e‑maila przez serwer SMTP:
import aspose.email as ae
http_proxy = ae.clients.HttpProxy("18.222.124.59", 8080)
client = ae.clients.smtp.SmtpClient("host", 587, "username", "password")
client.proxy = http_proxy
client.send(ae.MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy", "Body"))
Wybierz obsługiwane metody uwierzytelniania SMTP w Pythonie
Aby zapewnić bezpieczne i zgodne połączenie z serwerem SMTP, ważne jest użycie metody uwierzytelniania obsługiwanej zarówno przez klienta, jak i serwer. Aspose.Email dla Pythona poprzez .NET udostępnia wbudowane właściwości aby to zarządzać:
-
supported_authentication— zwraca listę metod uwierzytelniania obsługiwanych przez serwer SMTP. -
allowed_authentication— pobiera lub ustawia metody uwierzytelniania, które klient może używać.
Korzystając z tych właściwości, programiści mogą dopasować możliwości klienta do wymagań serwera i uniknąć niepowodzeń uwierzytelniania podczas procesu połączenia.
Poniższy fragment kodu demonstruje, jak określić dozwoloną metodę uwierzytelniania SMTP przy użyciu allowed_authentication właściwość:
client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.LOGIN
Ustaw limit czasu serwera SMTP
Podczas wysyłania e‑maili przez sieć ustawienie odpowiedniego limitu czasu jest niezbędne, aby zapobiec zawieszeniu się aplikacji, jeśli serwer nie odpowie. timeout właściwość SmtpClient klasa w Aspose.Email dla Pythona poprzez .NET pozwala zdefiniować maksymalny czas oczekiwania (w milisekundach) na odpowiedzi serwera.
Ta właściwość dotyczy operacji, takich jak nawiązywanie połączenia lub wysyłanie poleceń SMTP. Jeśli serwer nie odpowie w określonym czasie, klient wyrzuca wyjątek timeout, co pomaga skuteczniej radzić sobie z nieodpowiadającymi serwerami.
Użyj poniższego fragmentu kodu, aby ustawić limit czasu odpowiedzi serwera:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient("host", 587, "username", "password", ae.clients.SecurityOptions.SSL_EXPLICIT)
# 60 seconds
client.timeout = 60000
Włącz szyfrowanie TLS dla bezpiecznych połączeń SMTP
Aspose.Email obsługuje bezpieczną komunikację z serwerami SMTP przy użyciu protokołów kryptograficznych SSL i TLS. Protokóły te pomagają chronić wymieniane dane między aplikacją a serwerem pocztowym, zapewniając poufność i integralność podczas transmisji.
NOTE: Only versions of SSL/TLS supported by your current Python framework can be applied. Unsupported protocol versions will be silently ignored without raising exceptions. If you need to bypass compatibility checks and explicitly set the encryption protocols, use the `set_supported_encryption_unsafe(value)` method of the [SmtpClient](https://reference.aspose.com/email/python-net/aspose.email.clients.smtp/smtpclient/#smtpclient-class) class.
Poniższy przykład kodu demonstruje, jak ustawić TLS 1.3 dla komunikacji SMTP:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient("host", 587, "username", "password", ae.clients.SecurityOptions.SSL_EXPLICIT)
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS13
Używanie mechanizmu CRAM-MD5 do uwierzytelniania
Aspose.Email dla Pythona poprzez .NET obsługuje mechanizm uwierzytelniania CRAM-MD5, który zwiększa bezpieczeństwo, unikając przesyłania haseł w postaci zwykłego tekstu podczas uwierzytelniania SMTP. Metoda ta jest szczególnie przydatna przy łączeniu się z serwerami wymagającymi uwierzytelniania challenge‑response.
Aby włączyć uwierzytelnianie CRAM-MD5, ustaw allowed_authentication właściwość SmtpClient klasę do CRAM_MD5, jak pokazano w poniższym przykładzie kodu:
client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.CRAM_MD5