12.2.2.1 FeedParser API

バージョン 2.4 で 新たに追加 された仕様です。

FeedParser API は email メッセージを漸進的に解析するのに向いています。 これは email メッセージのテキストを (ソケットなどの) 読み込みがブロックされる 可能性のある情報源から入力するときに必要となります。もちろん FeedParser は 文字列またはファイルにすべて格納されている email メッセージを解析するのにも 使うことができますが、このような場合には旧式の Parser API のほうが 便利かもしれません。これら 2つのパーザ API の意味論と得られる結果は同一です。

FeedParser API は簡単です。まずインスタンスをつくり、それに テキストを (それ以上テキストが必要なくなるまで) 流しこみます。その後 パーザを close すると根っこ (root) のメッセージオブジェクトが返されます。 標準に従ったメッセージを解析する場合、FeedParser は非常に 正確であり、標準に従っていないメッセージでもちゃんと動きます。 そのさい、これはメッセージがどのように壊れていると認識されたかについての 情報を残します。これはメッセージオブジェクトの defects 属性に リストとして現れ、メッセージ中に発見された問題が記録されます。 パーザが検出できる障害 (defect) については email.Errors モジュールを参照してください。

以下は FeedParser の API です:

クラス FeedParser( [_factory])
FeedParser インスタンスを作成します。オプション引数 _factory には 引数なしの callable を指定し、これはつねに新しいメッセージオブジェクトの作成が 必要になったときに呼び出されます。デフォルトでは、これは email.Message.Message クラスになっています。

feed( data)
FeedParser にデータを供給します。data は 1行または複数行からなる 文字列を渡します。渡される行は完結していなくてもよく、その場合 FeedParser は部分的な行を適切につなぎ合わせます。文字列中の各行は標準的な 3種類の 行末文字 (復帰 CR、改行 LF、または CR+LF) どれかの組み合わせでよく、これらが 混在してもかまいません。

close( )
FeedParser を close し、それまでに渡されたすべてのデータの 解析を完了させ根っこ (root) のメッセージオブジェクトを返します。 FeedParser を close したあとにさらにデータを feed した場合の 挙動は未定義です。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。