18.1.7. email.encoders: Кодировщики¶email.encoders: Encoders
При создании объектов Message с нуля часто требуется закодировать полезную нагрузку для передачи через совместимые почтовые серверы. Это особенно актуально для сообщений типов image/* и text/*, содержащих двоичные данные.
Пакет email предоставляет несколько удобных кодировок в своём модуле encoders. Эти кодировщики фактически используются конструкторами классов MIMEAudio и MIMEImage для предоставления кодировок по умолчанию. Все функции-кодировщики принимают ровно один аргумент – кодируемый объект сообщения. Обычно они извлекают полезную нагрузку, кодируют её и заменяют на новое закодированное значение. Также они должны устанавливать заголовок Content-Transfer-Encoding соответствующим образом.
Обратите внимание, что эти функции не имеют смысла для многокомпонентного сообщения. Их следует применять к отдельным подкомпонентам, и при передаче сообщения типа multipart будет возбуждено исключение TypeError.
Вот предоставленные функции кодирования:
- 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() также кодирует все символы табуляции и пробела в данных. |