Документация Python неофициальный перевод

19.1.13. email.encoders: Encoders

Исходный код: Lib/email/encoders.py


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

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

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

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

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

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

email.encoders.encode_quopri(msg)

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

email.encoders.encode_base64(msg)

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

email.encoders.encode_7or8bit(msg)

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

email.encoders.encode_noop(msg)

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

Сноски

1

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