email —メールとMIME処理パッケージ—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/email
移動先:案内検索

email —電子メールおよびMIME処理パッケージ

ソースコード: :source: `Lib / email / __ init __。py`



email パッケージは、電子メールメッセージを管理するためのライブラリです。 具体的には、SMTP( RFC 2821 )、NNTP、またはその他のサーバーへの電子メールメッセージの送信を行うように設計されたではありません。 これらは、 smtplibnntplib などのモジュールの機能です。 email パッケージは、 RFC 5322 および RFC 6532 をサポートし、可能な限りRFCに準拠しようとします。 RFC 2045 RFC 2046 RFC2047などのMIME関連RFC RFC 2183 、および RFC 2231

電子メールパッケージの全体的な構造は、3つの主要なコンポーネントと、他のコンポーネントの動作を制御する4番目のコンポーネントに分けることができます。

パッケージの中心的なコンポーネントは、電子メールメッセージを表す「オブジェクトモデル」です。 アプリケーションは、主に message サブモジュールで定義されたオブジェクトモデルインターフェイスを介してパッケージと対話します。 アプリケーションは、このAPIを使用して、既存の電子メールに関する質問をしたり、新しい電子メールを作成したり、同じオブジェクトモデルインターフェイスを使用する電子メールサブコンポーネントを追加または削除したりできます。 つまり、電子メールメッセージとそのMIMEサブコンポーネントの性質に従って、電子メールオブジェクトモデルは、すべて EmailMessage APIを提供するオブジェクトのツリー構造です。

パッケージの他の2つの主要なコンポーネントは、パーサージェネレーターです。 パーサーは、シリアル化されたバージョンの電子メールメッセージ(バイトのストリーム)を取得し、それを EmailMessage オブジェクトのツリーに変換します。 ジェネレータは EmailMessage を受け取り、それをシリアル化されたバイトストリームに戻します。 (パーサーとジェネレーターもテキスト文字のストリームを処理しますが、何らかの方法で無効なメッセージが表示されるのは簡単すぎるため、この使用はお勧めしません。)

制御コンポーネントはポリシーモジュールです。 すべての EmailMessage 、すべてのジェネレーター、およびすべてのパーサーには、その動作を制御するポリシーオブジェクトが関連付けられています。 通常、アプリケーションは、 EmailMessage が作成されたときに、 EmailMessage を直接インスタンス化して新しい電子メールを作成するか、を使用して入力ストリームを解析することによってのみポリシーを指定する必要があります。パーサー。 ただし、ジェネレーターを使用してメッセージをシリアル化すると、ポリシーを変更できます。 これにより、たとえば、一般的な電子メールメッセージをディスクから解析できますが、電子メールサーバーに送信するときに標準のSMTP設定を使用してシリアル化できます。

電子メールパッケージは、さまざまな管理RFCの詳細をアプリケーションから隠すために最善を尽くします。 概念的には、アプリケーションは、シリアル化されたときにこれらがどのように表されるかを心配することなく、電子メールメッセージをUnicodeテキストとバイナリ添付ファイルの構造化ツリーとして扱うことができるはずです。 ただし、実際には、MIMEメッセージとその構造、特にMIME「コンテンツタイプ」の名前と性質、およびそれらがマルチパートドキュメントを識別する方法を管理するルールの少なくともいくつかに注意する必要があることがよくあります。 ほとんどの場合、この知識はより複雑なアプリケーションにのみ必要であり、それでも問題の高レベルの構造のみであり、それらの構造がどのように表されるかの詳細ではありません。 MIMEコンテンツタイプは(電子メールだけでなく)最新のインターネットソフトウェアで広く使用されているため、これは多くのプログラマーにとってなじみのある概念です。

次のセクションでは、 email パッケージの機能について説明します。 アプリケーションが使用するプライマリインターフェイスであるメッセージオブジェクトモデルから始め、パーサーおよびジェネレーターコンポーネントを続けます。 次に、 policy コントロールについて説明します。これにより、ライブラリの主要コンポーネントの処理が完了します。

次の3つのセクションでは、パッケージで発生する可能性のある例外と、パーサーが検出する可能性のある欠陥(RFCへの非準拠)について説明します。 次に、 headerregistry および contentmanager サブコンポーネントについて説明します。これらは、それぞれヘッダーとペイロードのより詳細な操作を行うためのツールを提供します。 これらのコンポーネントは両方とも、重要なメッセージの消費と生成に関連する機能を含んでいますが、高度なアプリケーションにとって興味深い拡張性APIも文書化しています。

これらに続いて、前のセクションで説明したAPIの基本的な部分を使用する一連の例を示します。

上記は、電子メールパッケージの最新の(Unicode対応の)APIを表しています。 Message クラスで始まる残りのセクションでは、電子メールメッセージの表現方法の詳細をより直接的に処理する従来の compat32 APIについて説明します。 compat32 APIはRFCの詳細をアプリケーションから隠しませんしませんが、そのレベルで動作する必要があるアプリケーションにとって、それらは便利なツールになり得ます。 このドキュメントは、下位互換性の理由から compat32 APIをまだ使用しているアプリケーションにも関連しています。

バージョン3.6で変更:ドキュメントが再編成され、新しい EmailMessage / EmailPolicy APIを宣伝するように書き直されました。


email パッケージドキュメントの内容:

レガシーAPI:

も参照してください

モジュール smtplib
SMTP(Simple Mail Transport Protocol)クライアント
モジュール poplib
POP(Post Office Protocol)クライアント
モジュール imaplib
IMAP(インターネットメッセージアクセスプロトコル)クライアント
モジュール nntplib
NNTP(Net News Transport Protocol)クライアント
モジュールメールボックス
さまざまな標準形式を使用して、ディスク上のメッセージのコレクションを作成、読み取り、および管理するためのツール。
モジュール smtpd
SMTPサーバーフレームワーク(主にテストに役立ちます)