mailcap --- Mailcap 文件處理?

源代碼: Lib/mailcap.py


Mailcap 文件可用來配置支持 MIME 的應(yīng)用例如郵件閱讀器和 Web 瀏覽器如何響應(yīng)具有不同 MIME 類型的文件。 ("mailcap" 這個(gè)名稱源自短語"mail capability"。) 例如,一個(gè) mailcap 文件可能包含 video/mpeg; xmpeg %s 這樣的行。 然后,如果用戶遇到 MIME 類型為 video/mpeg 的郵件消息或 Web 文檔時(shí),%s 將被替換為一個(gè)文件名(通常是一個(gè)臨時(shí)文件)并且將自動(dòng)啟動(dòng) xmpeg 程序來查看該文件。

mailcap 格式的文檔見 RFC 1524, "A User Agent Configuration Mechanism For Multimedia Mail Format Information",但它并不是一個(gè)因特網(wǎng)標(biāo)準(zhǔn)。 不過,mailcap 文件在大多數(shù) Unix 系統(tǒng)上都受到支持。

mailcap.findmatch(caps, MIMEtype, key='view', filename='/dev/null', plist=[])?

返回一個(gè) 2 元組;其中第一個(gè)元素是包含所要執(zhí)行命令的字符串 (它可被傳遞給 os.system()),第二個(gè)元素是對(duì)應(yīng)于給定 MIME 類型的 mailcap 條目。 如果找不到匹配的 MIME 類型,則將返回 (None, None)。

key 是所需字段的名稱,它代表要執(zhí)行的活動(dòng)類型;默認(rèn)值是 'view',因?yàn)樵谧钔ǔ5那闆r下你只是想要查看 MIME 類型數(shù)據(jù)的正文。 其他可能的值還有 'compose' 和 'edit',分別用于想要?jiǎng)?chuàng)建給定 MIME 類型正文或修改現(xiàn)有正文數(shù)據(jù)的情況。 請(qǐng)參閱 RFC 1524 獲取這些字段的完整列表。

filename 是在命令行中用來替換 %s 的文件名;默認(rèn)值 '/dev/null' 幾乎肯定不是你想要的,因此通常你要通過指定一個(gè)文件名來重載它。

plist 可以是一個(gè)包含命名形參的列表;默認(rèn)值只是一個(gè)空列表。 列表中的每個(gè)條目必須為包含形參名稱的字符串、等于號(hào) ('=') 以及形參的值。 Mailcap 條目可以包含形如 %{foo} 的命名形參,它將由名為 'foo' 的形參的值所替換。 例如,如果命令行 showpartial %{id} %{number} %{total} 是在一個(gè) mailcap 文件中,并且 plist 被設(shè)為 ['id=1', 'number=2', 'total=3'],則結(jié)果命令行將為 'showpartial 1 2 3'。

在 mailcap 文件中,可以指定可選的 "test" 字段來檢測(cè)某些外部條件(例如所使用的機(jī)器架構(gòu)或窗口系統(tǒng))來確定是否要應(yīng)用 mailcap 行。 findmatch() 將自動(dòng)檢查此類條件并在檢查未通過時(shí)跳過條目。

mailcap.getcaps()?

返回一個(gè)將 MIME 類型映射到 mailcap 文件條目列表的字典。 此字典必須被傳給 findmatch() 函數(shù)。 條目會(huì)被存儲(chǔ)為字典列表,但并不需要了解此表示形式的細(xì)節(jié)。

此信息來自在系統(tǒng)中找到的所有 mailcap 文件。 用戶的 mailcap 文件 $HOME/.mailcap 中的設(shè)置將覆蓋系統(tǒng) mailcap 文件 /etc/mailcap, /usr/etc/mailcap/usr/local/etc/mailcap 中的設(shè)置。

一個(gè)用法示例:

>>> import mailcap
>>> d = mailcap.getcaps()
>>> mailcap.findmatch(d, 'video/mpeg', filename='tmp1223')
('xmpeg tmp1223', {'view': 'xmpeg %s'})