# 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`()

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