mailcap – Обработка файлов Mailcap¶mailcap – Mailcap file handling
Исходный код: 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()автоматически проверяет такие условия и пропускает запись, если проверка не пройдена.Изменено в версии 3.10.8: Чтобы предотвратить проблемы безопасности, связанные с метасимволами оболочки (символы, имеющие особые эффекты в командной строке оболочки),
findmatchбудет отказываться вставлять символы ASCII, отличные от буквенно-цифровых и@+=:,./-_в возвращаемую командную строку.Если недопустимый символ встречается в filename,
findmatchвсегда возвращает(None, None), как если бы запись не была найдена. Если такой символ встречается в другом месте (значение в plist или в MIMEtype),findmatchигнорирует все записи mailcap, использующие это значение. В любом случае возникаетwarning.
-
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'})