mimetools.md
1> **Источник:** https://python-all.ru/2.7/library/mimetools.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 18.6. [`mimetools`](https://python-all.ru/2.7/library/mimetools.html#module-mimetools) – Инструменты для разбора MIME-сообщений89Устарело с версии 2.3: Пакет [`email`](https://python-all.ru/2.7/library/email.html#module-email) следует использовать вместо модуля [`mimetools`](https://python-all.ru/2.7/library/mimetools.html#module-mimetools). Этот модуль присутствует только для поддержания обратной совместимости и был удалён в 3.x.1011Этот модуль определяет подкласс класса [`Message`](https://python-all.ru/2.7/library/mimetools.html#mimetools.Message) модуля [`rfc822`](https://python-all.ru/2.7/library/rfc822.html#module-rfc822) и ряд служебных функций, полезных для работы с MIME-сообщениями, состоящими из нескольких частей или закодированными.1213Определяются следующие элементы:1415#### `class mimetools.Message(fp[, seekable])`1617Возвращает новый экземпляр класса [`Message`](https://python-all.ru/2.7/library/mimetools.html#mimetools.Message). Это подкласс класса [`rfc822.Message`](https://python-all.ru/2.7/library/rfc822.html#rfc822.Message) с некоторыми дополнительными методами (см. ниже). Аргумент *seekable* имеет то же значение, что и для [`rfc822.Message`](https://python-all.ru/2.7/library/rfc822.html#rfc822.Message).1819#### `mimetools.choose_boundary()`2021Возвращает уникальную строку, которая с высокой вероятностью может быть использована в качестве границы части. Строка имеет вид `'hostipaddr.uid.pid.timestamp.random'`.2223#### `mimetools.decode(input, output, encoding)`2425Читает данные, закодированные с использованием разрешённой MIME-кодировки *encoding*, из открытого файлового объекта *input* и записывает декодированные данные в открытый файловый объект *output*. Допустимые значения для *encoding* включают `'base64'`, `'quoted-printable'`, `'uuencode'`, `'x-uuencode'`, `'uue'`, `'x-uue'`, `'7bit'` и `'8bit'`. Декодирование сообщений, закодированных в `'7bit'` или `'8bit'`, не даёт эффекта. Входные данные просто копируются в выходные.2627#### `mimetools.encode(input, output, encoding)`2829Читает данные из открытого файлового объекта *input* и записывает их, закодировав с использованием разрешённой MIME-кодировки *encoding*, в открытый файловый объект *output*. Допустимые значения для *encoding* такие же, как для [`decode()`](https://python-all.ru/2.7/library/mimetools.html#mimetools.decode).3031#### `mimetools.copyliteral(input, output)`3233Читает строки из открытого файла *input* до конца файла и записывает их в открытый файл *output*.3435#### `mimetools.copybinary(input, output)`3637Читает блоки до конца файла из открытого файла *input* и записывает их в открытый файл *output*. Размер блока в настоящее время фиксирован и равен 8192.3839> **См. также**40>41> **Модуль [`email`](https://python-all.ru/2.7/library/email.html#module-email)**42>43> Комплексный пакет для работы с электронной почтой; заменяет модуль [`mimetools`](https://python-all.ru/2.7/library/mimetools.html#module-mimetools).44>45> **Модуль [`rfc822`](https://python-all.ru/2.7/library/rfc822.html#module-rfc822)**46>47> Предоставляет базовый класс для [`mimetools.Message`](https://python-all.ru/2.7/library/mimetools.html#mimetools.Message).48>49> **Модуль [`multifile`](https://python-all.ru/2.7/library/multifile.html#module-multifile)**50>51> Поддержка чтения файлов, содержащих отдельные части, например, MIME-данные.52>53> **[http://faqs.cs.uu.nl/na-dir/mail/mime-faq/.html](https://python-all.ru/2.7/library/mimetools.html)**54>55> Документ с часто задаваемыми вопросами по MIME. Обзор MIME см. в ответе на вопрос 1.1 в части 1 этого документа.5657## 18.6.1. Дополнительные методы объектов Message5859Класс [`Message`](https://python-all.ru/2.7/library/mimetools.html#mimetools.Message) определяет следующие методы в дополнение к методам [`rfc822.Message`](https://python-all.ru/2.7/library/rfc822.html#rfc822.Message):6061#### `Message.getplist()`6263Возвращает список параметров заголовка *Content-Type*. Это список строк. Для параметров вида `key=value`, *key* преобразуется в нижний регистр, а *value* – нет. Например, если сообщение содержит заголовок `Content-type: text/html; spam=1; Spam=2; Spam`, то [`getplist()`](https://python-all.ru/2.7/library/mimetools.html#mimetools.Message.getplist) вернёт список Python `['spam=1', 'spam=2', 'Spam']`.6465#### `Message.getparam(name)`6667Возвращает *value* первого параметра (возвращаемого функцией [`getplist()`](https://python-all.ru/2.7/library/mimetools.html#mimetools.Message.getplist)) вида `name=value` для заданного *name*. Если *value* окружён кавычками вида '`<`…`>`' или '`"`…`"`', они удаляются.6869#### `Message.getencoding()`7071Возвращает кодировку, указанную в заголовке сообщения *Content-Transfer-Encoding*. Если такого заголовка нет, возвращает `'7bit'`. Кодировка преобразуется в нижний регистр.7273#### `Message.gettype()`7475Возвращает тип сообщения (вида `type/subtype`), указанный в заголовке *Content-Type*. Если такого заголовка нет, возвращает `'text/plain'`. Тип преобразуется в нижний регистр.7677#### `Message.getmaintype()`7879Возвращает основной тип, указанный в заголовке *Content-Type*. Если такого заголовка нет, возвращает `'text'`. Основной тип преобразуется в нижний регистр.8081#### `Message.getsubtype()`8283Возвращает подтип, указанный в заголовке *Content-Type*. Если такого заголовка нет, возвращает `'plain'`. Подтип преобразуется в нижний регистр.84