Підключитися до SMTP‑сервера
Підключитися до SMTP-сервера з SSL
Щоб встановити захищене з’єднання з SMTP‑сервером, який підтримує SSL, потрібно налаштувати наступні ключові властивості SmtpClient клас:
-
Хост: Адреса SMTP‑сервера (наприклад, smtp.gmail.com)
-
Порт: Порт, що використовується для зв’язку з SSL (зазвичай 465 для неявного SSL або 587 для явного SSL/TLS)
-
Ім’я користувача: Ім’я облікового запису, що використовується для автентифікації
-
Пароль: Пароль для SMTP‑акаунту
-
Опції безпеки: Тип шифрування, який буде використано (SSLEXPLICIT, SSLIMPLICIT, тощо)
Наступний приклад коду демонструє, як налаштувати та підключитися до SMTP‑сервера з підтримкою SSL:
Встановити тайм‑аут для відповіді привітання від сервера
При встановленні з’єднання з SMTP‑сервером сервер зазвичай надсилає рядок привітання після успішного підключення. Ця відповідь підтверджує, що сервер готовий продовжувати обмін.
У деяких сценаріях поштові клієнти працюють в режимі автоматичного підключення, пробуючи різні комбінації протоколів безпеки та портів (наприклад, неявний SSL або STARTTLS) для встановлення успішного з’єднання. Якщо конфігурація клієнта не відповідає очікуваному сервером режиму безпеки, сервер не надсилатиме рядок привітання. Таке невідповідність змушує клієнт чекати до закінчення загального тайм‑ауту перед спробою наступної комбінації — що призводить до повільної обробки підключення.
Щоб поліпшити цю поведінку, Aspose.Email надає greeting_timeout властивість у SmtpClient class. Ця властивість встановлює конкретний тайм‑аут (у мілісекундах) очікування рядка привітання сервера. Якщо привітання не отримано протягом вказаного інтервалу, клієнт негайно переходить до наступної конфігурації — значно прискорюючи процес автоматичного підключення.
Наступний приклад коду демонструє, як реалізувати властивість у проєкті:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient("localhost", 25, "username", "password")
client.greeting_timeout = 4000
Надсилати листи через SMTP, використовуючи SOCKS‑проксі
Aspose.Email підтримує версії 4, 4a та 5 протоколу SOCKS‑проксі. Наступний приклад коду демонструє, як надіслати лист через SMTP з використанням 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)"))
Надсилати листи через SMTP, використовуючи HTTP‑проксі
Нижче наведений приклад коду демонструє використання HTTP‑проксі для надсилання електронного листа через 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"))
Виберіть підтримувані методи SMTP‑автентифікації у Python
Щоб забезпечити безпечне та сумісне підключення до SMTP‑сервера, важливо використовувати метод автентифікації, підтримуваний як клієнтом, так і сервером. Aspose.Email for Python via .NET надає вбудовані властивості для керування цим:
-
supported_authentication— отримує список методів автентифікації, підтримуваних SMTP‑сервером. -
allowed_authentication— отримує або встановлює методи автентифікації, які дозволено використовувати клієнту.
Використовуючи ці властивості, розробники можуть узгодити можливості клієнта з вимогами сервера та уникнути невдач автентифікації під час процесу підключення.
Наступний фрагмент коду демонструє, як вказати дозволений метод SMTP‑автентифікації, використовуючи allowed_authentication властивість:
client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.LOGIN
Встановити тайм‑аут SMTP‑сервера
При надсиланні електронних листів по мережі встановлення відповідного тайм‑ауту є важливим, щоб запобігти зависанню вашого застосунка, якщо сервер не відповідає. timeout властивість SmtpClient class у Aspose.Email for Python via .NET дозволяє визначити максимальний час очікування (у мілісекундах) на відповіді сервера.
Ця властивість застосовується до операцій, таких як встановлення з’єднання або надсилання SMTP‑команд. Якщо сервер не відповідає протягом заданого часу, клієнт викидає виключення тайм‑ауту, що допомагає ефективніше обробляти не відповідаючі сервери.
Використайте наведений фрагмент коду, щоб встановити час очікування відповіді сервера:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient("host", 587, "username", "password", ae.clients.SecurityOptions.SSL_EXPLICIT)
# 60 seconds
client.timeout = 60000
Увімкнути шифрування TLS для безпечних SMTP‑з’єднань
Aspose.Email підтримує захищений зв’язок з SMTP‑сервером за допомогою криптографічних протоколів SSL та TLS. Ці протоколи захищають дані, які обмінюються між вашим застосунком і поштовим сервером, забезпечуючи конфіденційність та цілісність під час передачі.
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.
Наступний приклад коду демонструє, як встановити TLS 1.3 для 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
Використання механізму CRAM-MD5 для автентифікації
Aspose.Email for Python via .NET підтримує механізм автентифікації CRAM-MD5, що підвищує безпеку, уникаючи передачі паролів у відкритому вигляді під час SMTP‑автентифікації. Цей метод особливо корисний при підключенні до серверів, що вимагають автентифікації challenge‑response.
Щоб увімкнути автентифікацію CRAM-MD5, встановіть allowed_authentication властивість SmtpClient class до CRAM_MD5, як показано у наступному прикладі коду:
client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.CRAM_MD5