mailcap --- Mailcap 文件處理?

源代碼: Lib/mailcap.py

Deprecated since version 3.11, will be removed in version 3.13: The mailcap module is deprecated (see PEP 594 for details). The mimetypes module provides an alternative.


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

mailcap 格式的說明文檔見 RFC 1524, "A User Agent Configuration Mechanism For Multimedia Mail Format Information",但它并不是一個互聯網標準。 不過,mailcap 文件在大多數 Unix 系統上都受到支持。

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

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

key 是所需字段的名稱,它代表要執(zhí)行的活動類型;默認值是 'view',因為在最通常的情況下你只是想要查看 MIME 類型數據的正文。 其他可能的值還有 'compose' 和 'edit',分別用于想要創(chuàng)建給定 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() 函數。 條目會被存儲為字典列表,但并不需要了解此表示形式的細節(jié)。

此信息來自在系統中找到的所有 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'})