18.6. mimetools --- MIME メッセージを解析するためのツール

バージョン 2.3 で非推奨: email パッケージを mimetools モジュールより優先して使うべきです。このモジュールは、下位互換性維持のためにのみ存在しています。Python 3.x では削除されています。

このモジュールは、 rfc822 モジュールの Message クラスのサブクラスと、マルチパート MIME や符合化メッセージの操作に役に立つ多くのユーティリティ関数を定義しています。

このモジュールでは以下の内容を定義しています:

class mimetools.Message(fp[, seekable])

Message クラスの新しいインスタンスを返します。これは、 rfc822.Message クラスのサブクラスで、いくつかの追加のメソッドがあります(以下を参照のこと)。 seekable 引数は、 rfc822.Message のものと同じ意味を持ちます。

mimetools.choose_boundary()

パートの境界として使うことができる見込みが高いユニークな文字列を返します。その文字列は、 'hostipaddr.uid.pid.timestamp.random' の形をしています。

mimetools.decode(input, output, encoding)

オープンしたファイルオブジェクト input から、許される MIME encoding を使って符号化されたデータを読んで、オープンされたファイルオブジェクト output に復号化されたデータを書きます。 encoding に許される値は、 'base64', 'quoted-printable', 'uuencode', 'x-uuencode', 'uue', 'x-uue', '7bit', および '8bit' です。 '7bit' あるいは '8bit' で符号化されたメッセージを復号化しても何も効果がありません。入力が出力に単純にコピーされるだけです。

mimetools.encode(input, output, encoding)

オープンしたファイルオブジェクト input からデータを読んで、それを許される MIME encoding を使って符号化して、オープンしたファイルオブジェクト output に書きます。 encoding に許される値は、 decode() のものと同じです。

mimetools.copyliteral(input, output)

オープンしたファイル input から行を EOF まで読んで、それらをオープンしたファイル output に書きます。

mimetools.copybinary(input, output)

オープンしたファイル input からブロックを EOF まで読んで、それらをオープンしたファイル output に書きます。ブロックの大きさは現在 8192 に固定されています。

参考

email モジュール

包括的な e-mail 処理パッケージです。 mimetools に取って代わります。

rfc822 モジュール

mimetools.Message のベースクラスを提供しています。

multifile モジュール

MIME データのような、別個のパーツを含むファイルの読み込みをサポート。

http://faqs.cs.uu.nl/na-dir/mail/mime-faq/.html

MIME でよく訊ねられる質問と回答。MIMEの概要に関しては、この文書の Part 1 の質問 1.1 への回答参照。

18.6.1. Message オブジェクトの追加メソッド

Message クラスは、 rfc822.Message メソッドに加えて、以下のメソッドを定義しています:

Message.getplist()

Content-Type ヘッダのパラメータリストを返します。これは文字列のリストです。 key=value の形のパラメータに対しては、 key は小文字に変換されますが、 value は変換されません。たとえば、もしメッセージに、ヘッダ Content-type: text/html; spam=1; Spam=2; Spam が含まれていれば、 getplist() は、Python リスト ['spam=1', 'spam=2', 'Spam'] を返すでしょう。

Message.getparam(name)

与えられた name の( name=value の形に対して getplist() が返す) 第 1 パラメータの value を返します。もし value が、'<...>' あるいは '"..."' のように引用符で囲まれていれば、これらは除去されます。

Message.getencoding()

Content-Transfer-Encoding メッセージヘッダで指定された符号化方式を返します。もしそのようなヘッダが存在しなければ、 '7bit' を返します。符号化方式文字列は小文字に変換されます。

Message.gettype()

Content-Type ヘッダで指定された (type/subtype の形での) メッセージタイプを返します。もしそのようなヘッダが存在しなければ、 'text/plain' を返します。タイプ文字列は小文字に変換されます。

Message.getmaintype()

Content-Type ヘッダで指定されたメインタイプを返します。もしそのようなヘッダが存在しなければ、 'text' を返します。メインタイプ文字列は小文字に変換されます。

Message.getsubtype()

Content-Type ヘッダで指定されたサブタイプを返します。もしそのようなヘッダが存在しなければ、 'plain' を返します。サブタイプ文字列は小文字に変換されます。