email.mime
: Создание объектов электронной почты и MIME с нуля
Этот модуль является частью устаревшего (Compat32
) почтового API. Его
функциональные возможности частично заменены contentmanager
в
новом API, но в некоторых приложениях эти классы всё ещё могут быть полезны,
даже в не унаследованном коде.
Обычно вы получаете структуру объекта сообщения, передавая файл или некоторый
текст парсеру, который анализирует текст и возвращает
корневой объект сообщения. Однако вы также можете создать полную структуру
сообщения с нуля или даже отдельные объекты Message
вручную. Фактически, вы также можете взять существующую структуру и добавить
новые объекты Message
, перемещать их и т. д. Это делает
очень удобный интерфейс для нарезки и игрой с MIME сообщениями.
Вы можете создать новую структуру объекта, создав экземпляры
Message
, добавив вложения и все соответствующие
заголовки вручную. Однако для сообщений MIME пакет email
предоставляет
несколько удобных подклассов, упрощающих работу.
Классы:
-
class
email.mime.base.
MIMEBase
(_maintype, _subtype, *, policy=compat32, **_params) Модуль:
email.mime.base
Базовый класс для всех специфичных для MIME подклассов
Message
. Обычно вы не будете создавать экземпляры специально дляMIMEBase
, хотя можете.MIMEBase
предоставляется в первую очередь как удобный базовый класс для подклассов, поддерживающих MIME._maintype — это основной тип Content-Type (например, text или image), а _subtype — второстепенный тип Content-Type (например, plain или gif). _params — это словарь ключ/значение параметра, который передается непосредственно в
Message.add_header
.Если указан policy (по умолчанию политика
compat32
), он будет передан вMessage
.Класс
MIMEBase
всегда добавляет заголовок Content- Type (на основе _maintype, _subtype и _params) и заголовок MIME-Version (всегда установлен на1.0
).Изменено в версии 3.6: Добавлен только ключевой параметр policy.
-
class
email.mime.nonmultipart.
MIMENonMultipart
Модуль:
email.mime.nonmultipart
Подкласс
MIMEBase
, это промежуточный базовый класс для сообщений MIME, которые не являются multipart. Основная цель этого класса — предотвратить использование методаattach()
, который имеет смысл только для сообщений multipart. Если вызываетсяattach()
, возникает исключениеMultipartConversionError
.
-
class
email.mime.multipart.
MIMEMultipart
(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params) Модуль:
email.mime.multipart
Подкласс
MIMEBase
, это промежуточный базовый класс для сообщений MIME, которые являются multipart. Необязательный _subtype по умолчанию — mixed, но может использоваться для указания подтипа сообщения. Заголовок Content-Type из multipart/_subtype будет добавлен к объекту сообщения. Заголовок MIME-Version также будет добавлен.Необязательный boundary — это составная граничная строка. Когда
None
(по умолчанию), граница вычисляется при необходимости (например, когда сообщение сериализуется)._subparts — это последовательность начальных частей полезной нагрузки. Должна быть возможность преобразовать эту последовательность в список. Вы всегда можете присоединить к сообщению новые части, используя метод
Message.attach
.Необязательный аргумент policy по умолчанию равен
compat32
.Дополнительные параметры для заголовка Content-Type берутся из ключевых аргументов или передаются в аргумент _params, который является словарем ключевых слов.
Изменено в версии 3.6: Добавлен только ключевой параметр policy.
-
class
email.mime.application.
MIMEApplication
(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params) Модуль:
email.mime.application
Подкласс
MIMENonMultipart
, классMIMEApplication
используется для представления объектов сообщений MIME основного типа application. _data — строка, содержащая необработанные байтовые данные. Необязательный _subtype указывает подтип MIME и по умолчанию octet-stream.Необязательный _encoder — это вызываемая функция (т. е. функция), которая будет выполнять фактическое кодирование данных для транспорта. Этот вызываемый объект принимает один аргумент — экземпляр
MIMEApplication
. Он должен использоватьget_payload()
иset_payload()
для изменения полезной нагрузки в закодированной форме. При необходимости следует также добавить к объекту сообщения любые заголовки Content-Transfer-Encoding или другие заголовки. Кодировка по умолчанию — base64. Список встроенных кодировщиков см. в модулеemail.encoders
.Необязательный аргумент policy по умолчанию равен
compat32
._params передаются прямо в конструктор базового класса.
Изменено в версии 3.6: Добавлен только ключевой параметр policy.
-
class
email.mime.audio.
MIMEAudio
(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params) Модуль:
email.mime.audio
Подкласс
MIMENonMultipart
, классMIMEAudio
используется для создания объектов сообщений MIME основного типа audio. _audiodata — это строка, содержащая необработанные аудиоданные. Если эти данные могут быть декодированы стандартным модулем Pythonsndhdr
, то подтип будет автоматически включен в заголовок Content-Type. В противном случае вы можете явно указать подтип аудио с помощью аргумента _subtype. Если второстепенный тип не удалось угадать и не было задано _subtype, то возникаетTypeError
.Необязательный _encoder — это вызываемая функция (т.е. функция), которая будет выполнять фактическое кодирование аудиоданных для транспорта. Этот вызываемый объект принимает один аргумент — экземпляр
MIMEAudio
. Он должен использоватьget_payload()
иset_payload()
, чтобы преобразовать полезную нагрузку в закодированную форму. При необходимости следует также добавить к объекту сообщения любые Content-Transfer-Encoding или другие заголовки. Кодировка по умолчанию — base64. Список встроенных кодировщиков см. в модулеemail.encoders
.Необязательный аргумент policy по умолчанию равен
compat32
._params передаются напрямую в конструктор базового класса.
Изменено в версии 3.6: Добавлен только ключевой параметр policy.
-
class
email.mime.image.
MIMEImage
(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params) Модуль:
email.mime.image
Подкласс
MIMENonMultipart
, классMIMEImage
используется для создания объектов сообщений MIME основного типа image. _imagedata — это строка, содержащая необработанные данные изображения. Если эти данные могут быть декодированы стандартным модулем Pythonimghdr
, то подтип будет автоматически включён в заголовок Content-Type. В противном случае вы можете явно указать подтип изображения с помощью аргумента _subtype. Если второстепенный тип не удалось угадать и не было задано _subtype, то возникаетTypeError
.Необязательный _encoder — это вызываемая функция (т. е. функция), которая будет выполнять фактическое кодирование данных изображения для транспортировки. Этот вызываемый объект принимает один аргумент — экземпляр
MIMEImage
. Он должен использоватьget_payload()
иset_payload()
для изменения полезной нагрузки в закодированной форме. При необходимости следует также добавить к объекту сообщения любые заголовки Content-Transfer-Encoding или другие заголовки. Кодировка по умолчанию — base64. Список встроенных кодировщиков см. в модулеemail.encoders
.Необязательный аргумент policy по умолчанию равен
compat32
._params передаются прямо в конструктор
MIMEBase
.Изменено в версии 3.6: Добавлен только ключевой параметр policy.
-
class
email.mime.message.
MIMEMessage
(_msg, _subtype='rfc822', *, policy=compat32) Модуль:
email.mime.message
Подкласс
MIMENonMultipart
, классMIMEMessage
используется для создания объектов MIME основного типа message. _msg используется в качестве полезной нагрузки и должен быть экземпляром классаMessage
(или его подклассом), в противном случае возникаетTypeError
.Необязательный _subtype устанавливает подтип сообщения; по умолчанию это rfc822.
Необязательный аргумент policy по умолчанию равен
compat32
.Изменено в версии 3.6: Добавлен только ключевой параметр policy.
-
class
email.mime.text.
MIMEText
(_text, _subtype='plain', _charset=None, *, policy=compat32) Модуль:
email.mime.text
Подкласс
MIMENonMultipart
, классMIMEText
используется для создания объектов MIME основного типа text. _text — строка для полезной нагрузки. _subtype — второстепенный тип, по умолчанию — plain. _charset — это множество символов текста, который передаётся в качестве аргумента конструкторуMIMENonMultipart
; по умолчанию используетсяus-ascii
, если строка содержит только кодовые точкиascii
, иutf-8
в противном случае. Параметр _charset принимает либо строку, либо экземплярCharset
.Если для аргумента _charset явно не задано значение
None
, созданный объект MIMEText будет иметь как заголовок Content-Type с параметромcharset
, так и заголовок Content-Transfer- Encoding. Это означает, что последующий вызовset_payload
не приведет к закодированной полезной нагрузке, даже если кодировка передана в командеset_payload
. Вы можете «сбросить» это поведение, удалив заголовокContent-Transfer-Encoding
, после чего вызовset_payload
автоматически закодирует новую полезную нагрузку (и добавит новый заголовок Content-Transfer-Encoding).Необязательный аргумент policy по умолчанию равен
compat32
.Изменено в версии 3.5: _charset также принимает экземпляры
Charset
.Изменено в версии 3.6: Добавлен только ключевой параметр policy.