19.3. mailcap
— Mailcap文件处理¶
源代码: Lib/mailcap.py
Mailcap文件用于配置MIME感知应用程序(如邮件阅读器和Web浏览器)对具有不同MIME类型的文件的反应。 (名称“mailcap”派生自短语“邮件功能”。)例如,mailcap文件可能包含类似 video/mpeg; xmpeg %s
的行。然后,如果用户遇到MIME类型为 video/mpeg 的电子邮件或Web文档,则 %s
将被文件名(通常属于临时文件)替换,并且 xmpeg 程序可以自动启动以查看文件。
mailcap格式记录在 RFC 1524,“用于多媒体邮件格式信息的用户代理配置机制”中,但不是因特网标准。但是,大多数Unix系统都支持mailcap文件。
-
mailcap.
findmatch
(caps, MIMEtype, key='view', filename='/dev/null', plist=[])¶ 返回一个2元组;第一个元素是包含要执行的命令行(可以传递给
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文件中,可以可选地指定“测试”字段来测试一些外部条件(例如机器架构或正在使用的窗口系统),以确定是否应用邮件帽线。
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'})