mailcap — Mailcap 文件处理 — Python 文档

来自菜鸟教程
Python/docs/3.8/library/mailcap
跳转至:导航、​搜索

mailcap — Mailcap 文件处理

源代码: :source:`Lib/mailcap.py`



Mailcap 文件用于配置 MIME 感知应用程序(如邮件阅读器和 Web 浏览器)如何对具有不同 MIME 类型的文件做出反应。 (名称“mailcap”源自短语“邮件功能”。)例如,mailcap 文件可能包含类似 video/mpeg; xmpeg %s 的行。 然后,如果用户遇到 MIME 类型为 video/mpeg 的电子邮件或 Web 文档,%s 将被替换为文件名(通常属于临时文件)和 [ X195X]xmpeg程序可以自动启动查看文件。

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

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

返回一个二元组; 第一个元素是包含要执行的命令行的字符串(可以传递给 os.system()),第二个元素是给定 MIME 类型的 mailcap 条目。 如果找不到匹配的 MIME 类型,则返回 (None, None)

key 是所需字段的名称,代表要执行的活动类型; 默认值为“view”,因为在最常见的情况下,您只想查看 MIME 类型数据的主体。 如果您想创建给定 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'})