email.encoders: кодировщики


Данный модуль является частью устаревшего API электронной почты (Compat32). В новом API функциональность обеспечивается cte параметром метода set_content().

Данный модуль устарел в Python 3. Представленные здесь функции не следует вызывать явно, поскольку класс MIMEText устанавливает тип контента и CTE заголовок, используя значения _subtype и _charset, переданные во время создания экземпляра данного класса.

Остальной текст в данном разделе является исходной документацией модуля.

При создании объектов Message с нуля часто требуется кодировать полезные данные для передачи через совместимые почтовые серверы. Это особенно верно для сообщений типа image/* и text/*, содержащих двоичные данные.

Пакет email предоставляет несколько удобных энкодеров в модуле encoders. Данные кодировщики фактически используются конструкторами классов MIMEAudio и MIMEImage для предоставления кодировок по умолчанию. Все функции кодировщика принимают ровно один аргумент — кодируемый объект сообщения. Обычно они извлекают полезную нагрузку, кодируют её и сбрасывают полезную нагрузку на это новое закодированное значение. Они также должны установить соответствующий заголовок Content-Transfer-Encoding.

Обратите внимание, что данные функции не имеют смысла для составного сообщения. Вместо этого они должны применяться к отдельным частям и будут вызывать TypeError, если будет передано сообщение, тип которого составной.

Здесь представлены функции кодирования:

email.encoders.encode_quopri(msg)

Кодирует полезные данные в форму для печати в кавычках и задаёт для заголовка Content-Transfer-Encoding значение quoted- printable [1]. Это хорошая кодировка для использования, когда большая часть полезной нагрузки представляет собой обычные данные для печати, но содержит несколько непечатаемых символов.

email.encoders.encode_base64(msg)

Кодирует полезные данные в формате base64 и задаёт для заголовка Content-Transfer-Encoding значение base64. Это хорошая кодировка для использования, когда большая часть полезной нагрузки представляет собой непечатаемые данные, поскольку это более компактная форма, чем закавыченная-печать. Недостатком кодировки base64 является то, что она делает текст нечитаемым человеком.

email.encoders.encode_7or8bit(msg)

На самом деле это не изменяет полезную нагрузку сообщения, но устанавливает для заголовка Content-Transfer-Encoding значение 7bit или 8bit в зависимости от данных полезной нагрузки.

email.encoders.encode_noop(msg)

Ничего не делает; он даже не устанавливает заголовок Content-Transfer-Encoding.

Сноски

[1]Обратите внимание, что кодирование с помощью encode_quopri() также кодирует все табуляции и пробелы символов в данных.