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'})