メールリーダーとWebブラウザが異なったMIME型のファイルに繰り返し実行されるように、 MIMEに対応しているアプリケーションをコンフィギュレーションするために Mailcapファイルは使われます。 (``mailcap''の名前は``mail capability''の句から派生しています。) たとえば、mailcapファイルは"video/mpeg; xmpeg %s"のように 含むことができます。 MIME型video/mpegが含まれているemailメッセージや Webドキュメントに遭遇したとき、"%s" はファイル名に置き換えられ、 (通常そのファイル名は属している一時的なファイルの名前です) xmpegプログラムは自動的にファイルを表示するために実行されます。
mailcapフォーマットはRFC 1524 ``A User Agent Configuration Mechanism For Multimedia Mail Format Information,'' に書かれています。しかしインターネットの標準ではありません。 しかしながら、mailcapファイルはほとんどのUnixシステムで対応されています。
key は要求されたフィールドの名前です。 それは、実行される動作の型を表します。 ほとんどの場合、MIME型データの本文をただみたいだけなので、デフォルト値は'view'です。 他には、与えられたMIME型の新しい本文を作りたいとか、本文データを変えられるように 'compose'と'edit'が可能な値です。 これらのフィールドの完全なリストはRFC 1524を参照してください。
filenameはコマンド行 "%s"の代わりをするファイル名です。 デフォルト値は'/dev/null'で、これはほとんど望まれないことなので、 通常、ファイル名を示すそれを優先します。
plistは名前のついた引数を含むリストです。デフォルト値は単純に空のリストです。 リストにあるそれぞれの見出し語は引数の名前、等号記号(=)、引数の値を 含む文字列でなければならないし、 mailcapの見出し語は%{foo}のような名前付き引数を含んでよい。 それは、引数名'foo'の値で置き換えてよい。 たとえば、コマンド行 "showpartial %{id} %{number} %{total}"が mailcapファイルにあって、plistが['id=1', 'number=2', 'total=3']に 設定されているとき、結果のコマンド行は"showpartial 1 2 3"になります。
mailcapファイルに"test"フィールドはmailcapの行の適用をするかしないか決めるため、 いくつかの外部状態(たとえば、利用しているマシンアーキテクチャ、ウィンドウシステム)を 任意に調べられることを示している。 findmatch()は自動的にそのような状態を調べ、見出し語についてチェックし、 失敗したら、それに該当する部分を飛ばします。
システムにある全てのmailcapファイルから情報が引き出されます。 ユーザーのmailcapファイル"$HOME/.mailcap"に設定されているものは、 システムのmailcapファイル"/etc/mailcap", "/usr/etc/mailcap" と "/usr/local/etc/mailcap"で設定されているものを優先します。
使用例:
>>> import mailcap >>> d=mailcap.getcaps() >>> mailcap.findmatch(d, 'video/mpeg', filename='/tmp/tmp1223') ('xmpeg /tmp/tmp1223', {'view': 'xmpeg %s'})
guido@python.org