12.2.2.1 Parser クラスの API

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

オプション引数である strict フラグは、strict 解析と lax 解析の どちらをおこなうかを指定します。MIME 終端文字列が欠けているとか、 メッセージにその他の書式上の問題がある場合、strict フラグが True であればParserMessageParseError を 発生させます。ただし、lax 解析が有効になっている場合 (strictFalse の場合)、Parser は崩れた書式からなんとかして 有効なメッセージ構造を生成しようと試みます (これは MessageParseError が 絶対に発生しないということではありません、ある種の異常な書式の メッセージはやはり解析できません)。デフォルトでは、strict フラグは False になっています。これは通常 lax 解析がもっとも理にかなった ふるまいを提供するためです。

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

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

parse( fp[, headersonly])
ファイルなどストリーム形式 12.1 のオブジェクト 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.1
file-like object
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。