mailcap — Mailcapファイル処理—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/mailcap
移動先:案内検索

mailcap —Mailcapファイルの処理

ソースコード: :source: `Lib / mailcap.py`



Mailcapファイルは、メールリーダーやWebブラウザーなどのMIME対応アプリケーションがさまざまなMIMEタイプのファイルにどのように反応するかを構成するために使用されます。 (「mailcap」という名前は、「mailcapability」というフレーズに由来します。)たとえば、mailcapファイルにvideo/mpeg; xmpeg %sのような行が含まれている場合があります。 次に、ユーザーがMIMEタイプ video / mpeg の電子メールメッセージまたはWebドキュメントに遭遇した場合、%sはファイル名(通常は一時ファイルに属するもの)と[ X195X] xmpeg プログラムを自動的に起動して、ファイルを表示できます。

mailcap形式は、 RFC 1524 、「マルチメディアメール形式情報のユーザーエージェント構成メカニズム」に記載されていますが、インターネット標準ではありません。 ただし、mailcapファイルはほとんどのUnixシステムでサポートされています。

mailcap.findmatch(caps, MIMEtype, key='view', filename='/dev/null', plist=[])

2タプルを返します。 最初の要素は実行されるコマンドラインを含む文字列( os.system()に渡すことができます)であり、2番目の要素は特定のMIMEタイプのmailcapエントリです。 一致するMIMEタイプが見つからない場合は、(None, None)が返されます。

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.getcaps()

MIMEタイプを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='tmp1223')
('xmpeg tmp1223', {'view': 'xmpeg %s'})