email: Создание email- и MIME-объектов с нуля¶email: Creating email and MIME objects from scratch
Обычно структура объекта сообщения получается путём передачи файла или текста анализатору, который разбирает текст и возвращает корневой объект сообщения. Однако можно также построить полную структуру сообщения с нуля или даже отдельные объекты Message вручную. Фактически можно взять существующую структуру и добавить новые объекты Message, перемещать их и т.д. Это даёт очень удобный интерфейс для разбора и обработки MIME-сообщений.
Можно создать новую структуру объектов, создавая экземпляры Message и вручную добавляя вложения и все необходимые заголовки. Однако для MIME-сообщений пакет email предоставляет несколько удобных подклассов, упрощающих задачу.
Вот классы:
- class email.mime.base.MIMEBase(_maintype, _subtype, **_params)¶
Модуль: email.mime.base
Это базовый класс для всех MIME-специфичных подклассов Message. Обычно не создают экземпляры непосредственно MIMEBase, хотя это возможно. MIMEBase предоставляется в первую очередь как удобный базовый класс для более специализированных MIME-подклассов.
_maintype – это основной тип Content-Type (например, text или image), а _subtype – это подтип Content-Type (например, plain или gif). _params – это словарь параметров «ключ/значение», который передаётся напрямую Message.add_header().
Класс MIMEBase всегда добавляет заголовок Content-Type (на основе _maintype, _subtype и _params), а также заголовок MIME-Version (всегда установлен в 1.0).
- class email.mime.nonmultipart.MIMENonMultipart¶
Модуль: email.mime.nonmultipart
Подкласс MIMEBase, это промежуточный базовый класс для MIME-сообщений, которые не являются multipart. Основная цель этого класса – предотвратить использование метода attach(), который имеет смысл только для multipart-сообщений. При вызове attach() возникает исключение MultipartConversionError.
- class email.mime.multipart.MIMEMultipart([_subtype[, boundary[, _subparts[, _params]]]])¶
Модуль: email.mime.multipart
Подкласс MIMEBase, это промежуточный базовый класс для MIME-сообщений, являющихся multipart. Необязательный параметр _subtype по умолчанию равен mixed, но может использоваться для указания подтипа сообщения. Заголовок Content-Type со значением multipart/_subtype будет добавлен к объекту сообщения. Также будет добавлен заголовок MIME-Version.
Необязательный параметр boundary – это строка границы multipart. Когда None (значение по умолчанию), граница вычисляется по мере необходимости.
_subparts – это последовательность начальных подчастей для содержимого. Она должна преобразовываться в список. Новые подчасти можно присоединить к сообщению с помощью метода Message.attach().
Дополнительные параметры для заголовка Content-Type берутся из именованных аргументов или передаются в аргумент _params, который является словарём именованных аргументов.
- class email.mime.application.MIMEApplication(_data[, _subtype[, _encoder[, **_params]]])¶
Модуль: email.mime.application
Подкласс MIMENonMultipart, класс MIMEApplication используется для представления объектов MIME-сообщений основного типа application. _data – строка, содержащая необработанные байтовые данные. Необязательный параметр _subtype задаёт MIME-подтип и по умолчанию равен octet-потоку.
Необязательный параметр _encoder – это вызываемый объект (т.е. функция), который выполняет непосредственное кодирование данных для передачи. Этот вызываемый объект принимает один аргумент – экземпляр MIMEApplication. Он должен использовать get_payload() и set_payload() для изменения содержимого в закодированную форму. Также он должен при необходимости добавить заголовок Content-Transfer-Encoding или другие заголовки к объекту сообщения. Кодировка по умолчанию – base64. Список встроенных кодировщиков см. в модуле email.encoders.
_params передаются напрямую конструктору базового класса.
- class email.mime.audio.MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]])¶
Модуль: email.mime.audio
Подкласс MIMENonMultipart, класс MIMEAudio используется для создания объектов MIME-сообщений основного типа audio. _audiodata – строка, содержащая необработанные аудиоданные. Если эти данные могут быть декодированы стандартным модулем Python sndhdr, то подтип будет автоматически включён в заголовок Content-Type. В противном случае можно явно указать аудиоподтип через параметр _subtype. Если подтип не удалось определить и _subtype не был указан, возникает исключение TypeError.
Необязательный параметр _encoder – это вызываемый объект (т.е. функция), который выполняет непосредственное кодирование аудиоданных для передачи. Этот вызываемый объект принимает один аргумент – экземпляр MIMEAudio. Он должен использовать get_payload() и set_payload() для изменения содержимого в закодированную форму. Также он должен при необходимости добавить заголовок Content-Transfer-Encoding или другие заголовки к объекту сообщения. Кодировка по умолчанию – base64. Список встроенных кодировщиков см. в модуле email.encoders.
_params передаются напрямую конструктору базового класса.
- class email.mime.image.MIMEImage(_imagedata[, _subtype[, _encoder[, **_params]]])¶
Модуль: email.mime.image
Подкласс MIMENonMultipart, класс MIMEImage используется для создания объектов MIME-сообщений основного типа image. _imagedata – строка, содержащая необработанные данные изображения. Если эти данные могут быть декодированы стандартным модулем Python imghdr, то подтип будет автоматически включён в заголовок Content-Type. В противном случае можно явно указать подтип изображения через параметр _subtype. Если подтип не удалось определить и _subtype не был указан, возникает исключение TypeError.
Необязательный параметр _encoder – это вызываемый объект (т.е. функция), который выполняет непосредственное кодирование данных изображения для передачи. Этот вызываемый объект принимает один аргумент – экземпляр MIMEImage. Он должен использовать get_payload() и set_payload() для изменения содержимого в закодированную форму. Также он должен при необходимости добавить заголовок Content-Transfer-Encoding или другие заголовки к объекту сообщения. Кодировка по умолчанию – base64. Список встроенных кодировщиков см. в модуле email.encoders.
Параметры _params передаются непосредственно конструктору MIMEBase.
- class email.mime.message.MIMEMessage(_msg[, _subtype])¶
Модуль: email.mime.message
Подкласс MIMENonMultipart, класс MIMEMessage используется для создания MIME-объектов основного типа message. _msg используется в качестве полезной нагрузки и должен быть экземпляром класса Message (или его подкласса), иначе возникает исключение TypeError.
Необязательный _subtype задаёт подтип сообщения; по умолчанию rfc822.
- class email.mime.text.MIMEText(_text[, _subtype[, _charset]])¶
Модуль: email.mime.text
Подкласс MIMENonMultipart, класс MIMEText используется для создания MIME-объектов основного типа text. _text – строка с полезной нагрузкой. _subtype – подтип, по умолчанию plain. _charset – кодировка текста, передаваемая в качестве параметра конструктору MIMENonMultipart; по умолчанию us-ascii. Никакого угадывания или перекодирования текстовых данных не производится.