mailcap — Mailcap 文件处理

源代码: Lib/mailcap.py


Mailcap 文件用于配置支持 MIME 的应用程序(例如邮件阅读器和 Web 浏览器)如何响应具有不同 MIME 类型的文件。 (名称“ mailcap”派生自短语“邮件Function”.)例如,mailcap 文件可能包含video/mpeg; xmpeg %s这样的行。然后,如果用户遇到 MIME 类型为* video/mpeg *的电子邮件或 Web 文档,则%s将替换为文件名(通常是一个临时文件),并且 xmpeg 程序可以自动启动查看文件。

mailcap 格式记录在 RFC 1524“多媒体邮件格式信息的用户代理配置机制”中,但不是 Internet 标准。但是,大多数 Unix 系统都支持 mailcap 文件。

  • mailcap. findmatch(* caps MIMEtype key ='view' filename ='/ dev/null' plist = [] *)
    • 返回一个 2Tuples;第一个元素是包含要执行的命令行的字符串(可以将其传递给os.system()),第二个元素是给定 MIME 类型的 mailcap 条目。如果找不到匹配的 MIME 类型,则返回(None, None)
  • key *是所需字段的名称,代表要执行的活动的类型;默认值为'view',因为在最常见的情况下,您只想查看 MIME 类型数据的主体。如果要创建给定 MIME 类型的新正文或更改现有正文数据,则其他可能的值可能是“ compose”和“ edit”。有关这些字段的完整列表,请参见 RFC 1524

  • filename *是要在命令行中替换%s的文件名;默认值为'/dev/null',几乎可以肯定这不是您想要的值,因此通常您可以pass指定文件名来覆盖它。

  • 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 类型 Map 到 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'})