mailcap ---邮件头文件处理

源代码: Lib/mailcap.py


mailcap文件用于配置支持mime的应用程序(如邮件阅读器和Web浏览器)对具有不同mime类型的文件的响应方式。(名称“mailcap”源自短语“mail capability”。)例如,mailcap文件可能包含类似于 video/mpeg; xmpeg %s . 然后,如果用户遇到具有mime类型的电子邮件或Web文档 video/mpeg%s 将替换为文件名(通常是属于临时文件的文件名)和 xmpeg 程序可以自动启动以查看文件。

mailcap格式记录在 RFC 1524 “多媒体邮件格式信息的用户代理配置机制”,但不是Internet标准。但是,大多数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' 这几乎肯定不是您想要的,所以通常您将通过指定一个文件名来覆盖它。

普利斯特 可以是包含命名参数的列表;默认值只是一个空列表。列表中的每个条目都必须是包含参数名和等号的字符串 ('=' )和参数的值。mailcap条目可以包含诸如 %{{foo}} ,将由名为“foo”的参数的值替换。例如,如果命令行 showpartial %{{id}} %{{number}} %{{total}} 在邮件头文件中,并且 普利斯特 被设定为 ['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'})