18.8. "MimeWriter" --- 汎用 MIME ファイルライター
*************************************************

バージョン 2.3 で非推奨: "email" パッケージを、 "MimeWriter" モジュー
ルよりも優先して使用すべきです。このモジュールは、下位互換性維持のため
だけに存在します。

このモジュールは、クラス "MimeWriter" を定義します。 この "MimeWriter"
クラスは、MIME マルチパートファイルを作成するための基本的なフォーマッ
タを実装します。 これは出力ファイル内をあちこち移動することも、大量の
バッファスペースを使うこともありません。 最終的にファイルに並ぶべき順
番に、パートを書かなければなりません。 "MimeWriter" は、あなたが追加す
るヘッダをバッファして、それらの順番を並び替えることができるようにしま
す。

class MimeWriter.MimeWriter(fp)

   "MimeWriter" クラスの新しいインスタンスを返します。 渡される唯一の
   引数 *fp* は、出力先ファイルオブジェクトです。 "StringIO" オブジェ
   クトも使えることに注意して下さい。


18.8.1. MimeWriter オブジェクト
===============================

"MimeWriter" インスタンスには以下のメソッドがあります:

MimeWriter.addheader(key, value[, prefix])

   MIMEメッセージに新しいヘッダ行を追加します。 *key* は、そのヘッダの
   名前であり、そして *value* で、そのヘッダの値を明示的に与えます。省
   略可能な引数 *prefix* は、ヘッダが挿入される場所を決定します; "0"
   は最後に追加することを意味し、 "1" は先頭への挿入です。デフォルトは
   最後に追加することです。

MimeWriter.flushheaders()

   今まで集められたヘッダすべてが書かれ (そして忘れられ) るようにしま
   す。これは、もし全く本体が必要でない場合に役に立ちます。例えば、ヘ
   ッダのような情報を保管するために (誤って) 使用された、型
   *message/rfc822* のサブパート用など。

MimeWriter.startbody(ctype[, plist[, prefix]])

   メッセージの本体に書くのに使用できるファイルのようなオブジェクトを
   返します。 content-type は与えられた *ctype* に設定され、省略可能な
   パラメータ *plist* は、 content-type 宣言のための追加のパラメータを
   与えます。 *prefix* は、そのデフォルトが先頭への挿入であること以外
   は "addheader()" でのように働きます。

MimeWriter.startmultipartbody(subtype[, boundary[, plist[, prefix]]])

   メッセージ本体を書くのに使うことができるファイルのようなオブジェク
   トを返します。更に、このメソッドはマルチパートのコードを初期化しま
   す。ここで、 *subtype* が、そのマルチパートのサブタイプを、
   *boundary* がユーザ定義の境界指定を、そして *plist* が、そのサブタ
   イプ用の省略可能なパラメータを定義します。 *prefix* は、
   "startbody()" でのように働きます。サブパートは、 "nextpart()" を使
   って作成するべきです。

MimeWriter.nextpart()

   マルチパートメッセージの個々のパートを表す、 "MimeWriter" の新しい
   インスタンスを返します。 これは、そのパートを書くのにも、また複雑な
   マルチパートを再帰的に作成するのにも使えます。 メッセージは、
   "nextpart()" を使う前に最初に "startmultipartbody()" で初期化しなけ
   ればなりません。

MimeWriter.lastpart()

   これは、マルチパートメッセージの最後のパートを指定するのに使うこと
   ができ、マルチパートメッセージを書くときは *いつでも* 使うべきです
   。
