12.2.2.2 Parser クラス API

Parser API は、メッセージを表すテキストが文字列またはファイルの形で 完全に使用可能なときメッセージを解析するのに使われます。 email.Parser モジュールはまた、HeaderParser と呼ばれる 2番目のクラスも提供しています。これはメッセージのヘッダのみを処理したい場合に 使うことができ、ずっと高速な処理がおこなえます。なぜならこれはメッセージ本体を 解析しようとはしないからです。かわりに、そのペイロードにはメッセージ本体の 生の文字列が格納されます。HeaderParser クラスは Parser クラスと同じ API をもっています。

クラス Parser( [_class[, strict]])
Parser クラスのコンストラクタです。 オプション引数 _class をとることができ、これは呼び出し可能な オブジェクト (関数やクラス) でなければならず、 メッセージ内コンポーネント (sub-message object) が作成されるときは いつでもその“工場”として使用できなければなりません。 デフォルトではこれは Message になっています (email.Message 参照)。この“工場”は引数なしで呼び出されます。

オプション引数 strict は無視されます。

リリース 2.4 で撤廃されました。 Parser は Python 2.4 で新しく導入された FeedParser の 後方互換性のための API ラッパで、すべての 解析が事実上 non-strict です。 Parser コンストラクタに strict フラグを渡す必要はありません。

バージョン 2.2.2 で 変更 された仕様: strict フラグが追加されました バージョン 2.4 で 変更 された仕様: strict フラグは推奨されなくなりました

それ以外の Parser メソッドは以下のとおりです:

parse( fp[, headersonly])
ファイルなどストリーム形式 12.2 のオブジェクト fp から すべてのデータを読み込み、得られたテキストを解析して基底 (root) メッセージ オブジェクト構造を返します。fp はストリーム形式のオブジェクトで readline() および read() 両方のメソッドを サポートしている必要があります。

fp に格納されているテキスト文字列は、一連の RFC 2822 形式の ヘッダおよびヘッダ継続行 (header continuation lines) によって構成されている 必要があります。オプションとして、最初にエンペローブヘッダが来ることもできます。 ヘッダ部分はデータの終端か、ひとつの空行によって終了したとみなされます。 ヘッダ部分に続くデータはメッセージ本体となります (MIME エンコードされた subpart を含んでいるかもしれません)。

オプション引数 headersonly はヘッダ部分を解析しただけで終了するか 否かを指定します。デフォルトの値は False で、これはそのファイルの 内容すべてを解析することを意味しています。

バージョン 2.2.2 で 変更 された仕様: headersonly フラグが追加されました

parsestr( text[, headersonly])
メソッドに似ていますが、ファイルなどのストリーム形式のかわりに 文字列を引数としてとるところが違います。文字列に対してこのメソッドを 呼ぶことは、textStringIO インスタンスとして作成して parse() を適用するのと同じです。

オプション引数 headersonlyparse() メソッドと同じです。

バージョン 2.2.2 で 変更 された仕様: headersonly フラグが追加されました

ファイルや文字列からメッセージオブジェクト構造を作成するのは かなりよくおこなわれる作業なので、便宜上次のような 2つの関数が 提供されています。これらは email パッケージのトップレベルの 名前空間で使用できます。

message_from_string( s[, _class[, strict]])
文字列からメッセージオブジェクト構造を作成し返します。 これは Parser().parsestr(s) とまったく同じです。 オプション引数 _class および strictParser クラスの コンストラクタと同様に解釈されます。

バージョン 2.2.2 で 変更 された仕様: strict フラグが追加されました

message_from_file( fp[, _class[, strict]])
Open されたファイルオブジェクトからメッセージオブジェクト構造を作成し返します。 これは Parser().parse(fp) とまったく同じです。 オプション引数 _class および strictParser クラスの コンストラクタと同様に解釈されます。

バージョン 2.2.2 で 変更 された仕様: strict フラグが追加されました

対話的な Python プロンプトでこの関数を使用するとすれば、このようになります:

>>> import email
>>> msg = email.message_from_string(myString)



... ファイルなどストリーム形式12.2
file-like object
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。