email.mime: Создание электронной почты и MIME-объектов с нуля¶
Исходный код: Lib/email/mime/
Этот модуль является частью устаревшего (Compat32) почтового API. В новом API его функциональность частично заменена на contentmanager, но в некоторых приложениях эти классы все еще могут быть полезны, даже в не устаревшем коде.
Обычно вы получаете структуру объекта сообщения, передавая файл или некоторый текст в синтаксический анализатор, который анализирует текст и возвращает корневой объект сообщения. Однако вы также можете создать полную структуру сообщения с нуля или даже отдельные объекты 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, используется для представления объектов MimeMessage основного типа 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 явно не задано значение
None, созданный текстовый объект MIME будет иметь как заголовок 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, предназначенный только для ключевых слов.