Документация Python неофициальный перевод

18.3. mailcap – Обработка файлов Mailcapmailcap – Mailcap file handling

Исходный код: Lib/mailcap.py


Файлы 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[, filename[, 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'})