mailcap — Обработка Mailcap файла


Файлы Mailcap используются для настройки того, как программы поддерживающие MIME (например, чтения почты и веб-браузеры), реагируют на файлы с различными MIME типами. (Название «mailcap» происходит от фразы «возможности почты (mail capability)».) Например, mailcap файл может содержать строку вида video/mpeg; xmpeg %s. Затем, если пользователь сталкивается с сообщением электронной почты или веб-документом с MIME типом video/mpeg, %s будет заменен именем файла (обычно принадлежащим временному файлу), и программа xmpeg может быть автоматически запущена для просмотра файла.

Формат mailcap задокументирован в RFC 1524, «Механизм настройки пользовательского агента для информации о формате мультимедийной почты», но не является стандартом Интернета. Однако mailcap файлы поддерживаются в большинстве Unix систем.

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

Возвращает 2-кортеж; первый элемент представляет собой строку, содержащую командную строку для выполнения (которую можно передать в os.system()), а второй элемент представляет собой запись mailcap для данного MIME типа. Если соответствующий 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 файлов, найденных в системе. Параметры в файле почтового ящика пользователя $HOME/.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'})