# 11.12 `smtplib` -- SMTP プロトコル クライアント

`smtplib`モジュールは、SMTPまたはESMTPのリスナーデーモンを備えた 任意のインターネット上のホストにメイルを送るために使用することができる SMTPクライアント・セッション・オブジェクトを定義します。 SMTPおよびESMTPオペレーションの詳細は、 RFC 821 (Simple Mail Transfer Protocol) や RFC 1869 (SMTP Service Extensions)を調べてください。

class `SMTP`( | [host[, port[, local_hostname]]])

  `SMTP`インスタンスはSMTPコネクションをカプセル化し、 SMTPとESMTPの命令をサポートをします。 オプションであるhostとportを与えた場合は、 SMTPクラスのインスタンスが作成されると同時に、 `connect()`メソッドを呼び出し初期化されます。 また、ホストから応答が無い場合は、`SMTPConnectError`が上げられます。

  普通に使う場合は、初期化と接続を行ってから、 `sendmail()`と`quit()`メソッドを呼びます。 使用例は先の方で記載しています。

このモジュールの例外には次のものがあります:

exception `SMTPException`
  このモジュールの例外クラスのベースクラスです。

exception `SMTPServerDisconnected`
  この例外はサーバが突然コネクションを切断するか、 もしくは`SMTP`インスタンスを生成する前にコネクションを張ろうと した場合に上げられます。

exception `SMTPResponseException`
  SMTPのエラーコードを含んだ例外のクラスです。 これらの例外はSMTPサーバがエラーコードを返すときに生成されます。 エラーコードは`smtp_code`属性に格納されます。 また、`smtp_error`属性にはエラーメッセージが格納されます。

exception `SMTPSenderRefused`
  送信者のアドレスが弾かれたときに上げられる例外です。 全ての`SMTPResponseException`例外に、 SMTPサーバが弾いた`sender'アドレスの文字列がセットされます。

exception `SMTPRecipientsRefused`
  全ての受取人アドレスが弾かれたときに上げられる例外です。 各受取人のエラーは属性`recipients`によってアクセス可能で、 `SMTP.sendmail()`が返す辞書と同じ並びの辞書になっています。

exception `SMTPDataError`
  SMTPサーバが、メッセージのデータを受け入れることを拒絶した時に 上げられる例外です。

exception `SMTPConnectError`
  サーバへの接続時にエラーが 発生した時に上げられる例外です。

exception `SMTPHeloError`
  サーバーが"`HELO`"メッセージを弾いた時に上げられる例外です。

参考資料:

RFC 821, Simple Mail Transfer Protocol
  SMTP のプロトコル定義 です。このドキュメントでは SMTP のモデル、操作手順、プロトコルの 詳細についてカバーしています。

RFC 1869, SMTP Service Extensions
  SMTP に対する ESMTP 拡張の定義です。このドキュメントでは、 新たな命令による SMTP の拡張、サーバによって提供される命令を 動的に発見する機能のサポート、およびいくつかの追加命令定義 について記述しています。