email.mime
: Создание электронной почты и MIME-объектов с нуля¶
Исходный код: Lib/email/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
.Если указана политика (по умолчанию используется политика
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
будет передан charset. Вы можете «сбросить» это поведение, удалив заголовокContent-Transfer-Encoding
, после чего вызовset_payload
автоматически закодирует новую полезную нагрузку (и добавит новый заголовок Content-Transfer-Encoding).Необязательный аргумент policy по умолчанию имеет значение
compat32
.Изменено в версии 3.5: _charset также принимает экземпляры
Charset
.Изменено в версии 3.6: Добавлен параметр policy только для ключевого слова.