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.Если указан параметр 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 — это строка разделителя multipart. Когда
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 содержит байты исходных данных аудио. Если эти данные могут быть декодированы как au, wav, aiff или aifc, то подтип будет автоматически включён в заголовок 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 содержит байты исходных данных изображения. Если тип данных может быть определён (jpeg, png, gif, tiff, rgb, pbm, pgm, ppm, rast, xbm, bmp, webp и exr), то подтип будет автоматически включён в заголовок 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 не задан явно, то созданный объект 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.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/email.mime.html