> **Источник:** https://python-all.ru/3.1/library/email.encoders.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 18.1.7. [`email`](https://python-all.ru/3.1/library/email.html#module-email): Кодировщики

При создании объектов [`Message`](https://python-all.ru/3.1/library/email.message.html#email.message.Message) с нуля часто требуется закодировать полезную нагрузку для передачи через совместимые почтовые серверы. Это особенно актуально для сообщений типов *image/\** и *text/\**, содержащих двоичные данные.

Пакет [`email`](https://python-all.ru/3.1/library/email.html#module-email) предоставляет несколько удобных кодировок в своём модуле `encoders`. Эти кодировщики фактически используются конструкторами классов [`MIMEAudio`](https://python-all.ru/3.1/library/email.mime.html#email.mime.audio.MIMEAudio) и [`MIMEImage`](https://python-all.ru/3.1/library/email.mime.html#email.mime.image.MIMEImage) для предоставления кодировок по умолчанию. Все функции-кодировщики принимают ровно один аргумент – кодируемый объект сообщения. Обычно они извлекают полезную нагрузку, кодируют её и заменяют на новое закодированное значение. Также они должны устанавливать заголовок *Content-Transfer-Encoding* соответствующим образом.

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

#### `email.encoders.encode_quopri(msg)`

Кодирует полезную нагрузку в формат quoted-printable и устанавливает заголовок

*Content-Transfer-Encoding*

в значение

`quoted-printable`

[\[1\]](https://python-all.ru/3.1/library/email.encoders.html#id2)

. Это хорошая кодировка, когда большая часть полезной нагрузки – обычные печатаемые данные, но встречается несколько непечатаемых символов.

#### `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\]](https://python-all.ru/3.1/library/email.encoders.html#id1) | Обратите внимание, что кодирование с помощью [`encode_quopri()`](https://python-all.ru/3.1/library/email.encoders.html#email.encoders.encode_quopri) также кодирует все символы табуляции и пробела в данных. |
| --- | --- |
