18.9. "mimify" --- 電子メールメッセージの MIME 処理
***************************************************

バージョン 2.3 で非推奨: "mimify" モジュールを使うよりも "email" パッ
ケージを使うべきです。このモジュールは以前のバージョンとの互換性のため
に保守されているにすぎません。

"mimify" モジュールでは電子メールメッセージから MIME へ、および MIME
から電子メールメッセージへの変換を行うための二つの関数を定義しています
。電子メールメッセージは単なるメッセージでも、 MIME 形式でもかまいませ
ん。各パートは個別に扱われます。メッセージ (の一部) の MIME 化
(mimify) の際、7 ビット ASCII 文字を使って表現できない何らかの文字が含
まれていた場合、メッセージの quoted-printable への符号化が伴います。メ
ッセージが送信される前に編集しなければならない場合、 MIME 化および非
MIME 化は特に便利です。典型的な使用法は以下のようになります:

   unmimify message
   edit message
   mimify message
   send message

モジュールでは以下のユーザから呼び出し可能な関数と、ユーザが設定可能な
変数を定義しています:

mimify.mimify(infile, outfile)

   *infile* を *outfile* にコピーします。その際、パートを quoted-
   printable に変換し、必要なら MIME メールヘッダを追加します。
   *infile* および *outfile* はファイルオブジェクト (実際には、
   "readline()" メソッドを持つ (*infile*) か、 "write()" (*outfile*)
   メソッドを持つあらゆるオブジェクト) か、ファイル名を指す文字列を指
   定することができます。 *infile* および *outfile* が両方とも文字列の
   場合、同じ値にすることができます。

mimify.unmimify(infile, outfile[, decode_base64])

   *infile* を *outfile* にコピーします。その際、全ての quoted-
   printable 化されたパートを復号化します。 *infile* および *outfile*
   はファイルオブジェクト (実際には、 "readline()" メソッドを持つ
   (*infile*) か、 "write()" (*outfile*) メソッドを持つあらゆるオブジ
   ェクト) か、ファイル名を指す文字列を指定することができます。
   *infile* および *outfile* が両方とも文字列の場合、同じ値にすること
   ができます。 *decode_base64* 引数が与えられており、その値が真である
   場合、 base64 符号で符号化されているパートも同様に復号化されます。

mimify.mime_decode_header(line)

   *line* 内の符号化されたヘッダ行が復号化されたものを返します。ISO
   8859-1 文字セット (Latin-1) だけをサポートします。

mimify.mime_encode_header(line)

   *line* 内のヘッダ行が MIME 符号化されたものを返します。

mimify.MAXLEN

   デフォルトでは、非 ASCII 文字 (8 ビット目がセットされている文字) を
   含むか、 "MAXLEN" 文字 (デフォルトの値は 200 です) よりも長い部分は
   quoted-printable 形式で符号化されます。

mimify.CHARSET

   文字セットがメールヘッダで指定されていない場合指定しなければなりま
   せん。使われている文字セットを表す文字列は "CHARSET" に記憶されます
   。デフォルトの値は ISO-8859-1 (Latin1 (latin-one) としても知られて
   います)。

このモジュールはコマンドラインから利用することもできます。以下のような
使用法:

   mimify.py -e [-l length] [infile [outfile]]
   mimify.py -d [-b] [infile [outfile]]

で、それぞれ符号化 (mimify) および復号化 (unmimify) を行います。標準の
設定では *infile* は標準入力で、 *putfile* は標準出力です。入出力に同
じファイルを指定することもできます。

符号化の際に **-l** オプションを与えた場合、 *length* で指定した長さよ
り長い行があれば、長い部分の内容が符号化されます。

復号化の際に **-b** オプションが与えられていれば、base64 パートも同様
に復号化されます。

参考:

  "quopri" モジュール
     MIME quoted-printable 形式ファイルのエンコードおよびデコード。
