mailcap — Mailcap 文件处理 — Python 文档
mailcap — Mailcap 文件处理
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'})