在线文档教程
Python

mailcap

mailcap — Mailcap file handling

源代码: Lib / mailcap.py

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

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

mailcap.findmatch(caps, MIMEtype[, key[, filename[, plist]]])

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

是所需字段的名称,它表示要执行的活动的类型; 默认值是'view',因为在最常见的情况下,您只需查看MIME类型数据的主体。如果您想要创建给定MIME类型的新体或者更改现有正文数据,其他可能的值可能是“撰写”和“编辑”。有关这些字段的完整列表,请参阅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'})