mailcap --- Mailcap 文件處理?

源代碼: Lib/mailcap.py


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

key 是所需字段的名稱,它代表要執行的活動類型;默認值是 'view',因為在最通常的情況下你只是想要查看 MIME 類型數據的正文。 其他可能的值還有 'compose' 和 'edit',分別用于想要創建給定 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'})