email.mime: Создание объектов электронной почты и MIME с нуля

Исходный код: Lib/email/mime/


Этот модуль является частью устаревшего API электронной почты (Compat32). Его функциональность частично заменена 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 является строка, содержащим необработанные аудиоданные. Если эти данные могут быть расшифрованы стандартным модулем Python sndhdr, то подтип будет автоматически включен в заголовок 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 является строка, содержащим необработанные данные изображения. Если эти данные могут быть расшифрованы стандартным модулем Python imghdr, то подтип будет автоматически включен в заголовок 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 только ключевой.