SMTP サーバーに接続

SSLでSMTPサーバーに接続

SSLをサポートするSMTPサーバーとの安全な接続を確立するには、以下の主要プロパティを設定する必要があります。 SmtpClient クラス:

  • Host: SMTPサーバーのアドレス (例: smtp.gmail.com)

  • Port: SSL対応通信に使用するポート (暗黙的SSLの場合は通常465、明示的SSL/TLSの場合は587)

  • Username: 認証に使用するアカウント名

  • Password: SMTPアカウントのパスワード

  • Security Options: 使用する暗号化のタイプ (SSLEXPLICIT、SSLIMPLICIT など)

以下のコードサンプルは、SSL対応SMTPサーバーの設定および接続方法を示しています。

サーバーからの挨拶応答のタイムアウトを設定

SMTP サーバーへの接続を確立すると、サーバーは通常、接続成功後に挨拶文字列を送信します。この応答は、サーバーが通信を続行できる状態であることを確認します。

一部のシナリオでは、メールクライアントは自動接続モードで動作し、複数のセキュリティプロトコルとポートの組み合わせ(暗黙的 SSL や STARTTLS など)を試して接続を確立しようとします。クライアントの設定がサーバーの期待するセキュリティモードと一致しない場合、サーバーは挨拶文字列を送信しません。この不一致により、クライアントは次の組み合わせを試す前に一般的なタイムアウトが期限切れになるまで待機し、接続処理が遅くなります。

この動作を改善するために、Aspose.Email は以下を提供します。 greeting_timeout のプロパティ SmtpClient クラス。このプロパティは、サーバーの挨拶文字列を待機するための特定のタイムアウト(ミリ秒)を設定します。指定された時間内に挨拶が受信されない場合、クライアントはすぐに次の設定を試み、 自動接続プロセスを大幅に高速化します。

以下のコードサンプルは、プロパティをプロジェクトに実装する方法を示しています。

import aspose.email as ae

client = ae.clients.smtp.SmtpClient("localhost", 25, "username", "password")
client.greeting_timeout = 4000

SOCKS プロキシを使用した SMTP 経由のメール送信

Aspose.Email は SOCKS プロキシプロトコルのバージョン 4、4a、5 をサポートしています。以下のコードサンプルは、SOCKS プロキシを使用して SMTP でメールを送信する方法を示しています。

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)"))

HTTP プロキシを使用した SMTP 経由のメール送信

以下のコードサンプルは、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"))

Python でサポートされている SMTP 認証方式を選択

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 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

安全な SMTP 接続のための TLS 暗号化を有効にする

Aspose.Email は、SSL および TLS 暗号プロトコルを使用した SMTP サーバーとの安全な通信をサポートします。これらのプロトコルは、アプリケーションとメールサーバー間でやり取りされるデータを保護し、送信中の機密性と完全性を確保します。

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.

以下のコード例は、SMTP通信で TLS 1.3 を設定する方法を示しています。

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 は、SMTP認証時に平文パスワードの送信を回避してセキュリティを向上させる CRAM-MD5 認証メカニズムをサポートしています。この方式は、チャレンジレスポンス認証を必要とするサーバーに接続する際に特に有用です。

CRAM-MD5認証を有効にするには、以下を設定します。 allowed_authentication プロパティ( SmtpClient クラスをCRAM_MD5に設定し、以下のコードサンプルに示すように:

client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.CRAM_MD5