mailcap
— Работа с файлами Mailcap¶
Исходный код: Lib/mailcap.py.
Не рекомендуется, начиная с версии 3.11: Модуль mailcap
является устаревшим (подробнее см. PEP 594). Модуль mimetypes
предоставляет альтернативу.
Файлы Mailcap используются для настройки того, как приложения, поддерживающие MIME, такие как почтовые программы и веб-браузеры, реагируют на файлы с различными MIME-типами. (Название «mailcap» происходит от фразы «mail capability».) Например, файл mailcap может содержать строку типа video/mpeg; xmpeg %s
. Тогда, если пользователь встретит сообщение электронной почты или веб-документ с MIME-типом video/mpeg, %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=[])¶ Возвращает кортеж из двух элементов; первый элемент - строка, содержащая командную строку для выполнения (которая может быть передана в
os.system()
), а второй элемент - запись mailcap для заданного MIME-типа. Если подходящий MIME-тип не найден, возвращается(None, None)
.key - это имя нужного поля, которое представляет тип действия, которое должно быть выполнено; значение по умолчанию - „view“, поскольку в наиболее распространенном случае вы просто хотите просмотреть тело данных MIME-типа. Другими возможными значениями могут быть „compose“ и „edit“, если вы хотите создать новое тело данного MIME-типа или изменить существующие данные тела. Полный список этих полей приведен в RFC 1524.
filename - это имя файла, которое будет заменено на
%s
в командной строке; значение по умолчанию -'/dev/null'
, что почти наверняка не то, что вам нужно, поэтому обычно вы отменяете его, указывая имя файла.plist может быть списком, содержащим именованные параметры; значение по умолчанию - просто пустой список. Каждая запись в списке должна быть строкой, содержащей имя параметра, знак равенства (
'='
) и значение параметра. Записи Mailcap могут содержать именованные параметры, например%{foo}
, которые будут заменены значением параметра с именем „foo“. Например, если в файле mailcap была командная строкаshowpartial %{id} %{number} %{total}
, а 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'})