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

email.encoders.md

48 строк · 5.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.9/library/email.encoders.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`email.encoders`](https://python-all.ru/3.9/library/email.encoders.html#module-email.encoders): Кодировщики89**Исходный код:** [Lib/email/encoders.py](https://python-all.ru/src/3.9/Lib/email/encoders.py)1011---1213Этот модуль является частью устаревшего (`Compat32`) API электронной почты. В новом API эта функциональность предоставляется параметром *cte* метода [`set_content()`](https://python-all.ru/3.9/library/email.message.html#email.message.EmailMessage.set_content).1415Этот модуль устарел в Python 3. Функции, предоставляемые здесь, не следует вызывать явно, поскольку класс [`MIMEText`](https://python-all.ru/3.9/library/email.mime.html#email.mime.text.MIMEText) устанавливает тип содержимого и заголовок CTE, используя значения *\_subtype* и *\_charset*, переданные при создании экземпляра этого класса.1617Оставшийся текст в этом разделе является оригинальной документацией модуля.1819При создании объектов [`Message`](https://python-all.ru/3.9/library/email.compat32-message.html#email.message.Message) с нуля часто требуется кодировать полезную нагрузку для передачи через совместимые почтовые серверы. Это особенно актуально для сообщений типов *image/\** и *text/\**, содержащих двоичные данные.2021Пакет [`email`](https://python-all.ru/3.9/library/email.html#module-email) предоставляет несколько удобных кодировщиков в своем модуле `encoders`. Эти кодировщики фактически используются конструкторами классов [`MIMEAudio`](https://python-all.ru/3.9/library/email.mime.html#email.mime.audio.MIMEAudio) и [`MIMEImage`](https://python-all.ru/3.9/library/email.mime.html#email.mime.image.MIMEImage) для обеспечения кодировок по умолчанию. Все функции кодирования принимают ровно один аргумент – объект сообщения для кодирования. Обычно они извлекают полезную нагрузку, кодируют её и заменяют payload на это новое закодированное значение. Они также должны соответствующим образом устанавливать заголовок *Content-Transfer-Encoding*.2223Обратите внимание, что эти функции не имеют смысла для многокомпонентного сообщения. Их следует применять к отдельным подчастям, и они вызовут исключение [`TypeError`](https://python-all.ru/3.9/library/exceptions.html#TypeError), если им передать сообщение типа multipart.2425Вот предоставленные функции кодирования:2627#### `email.encoders.encode_quopri(msg)`2829Кодирует полезную нагрузку в формат quoted-printable и устанавливает заголовок *Content-Transfer-Encoding* в `quoted-printable` [1](https://python-all.ru/3.9/library/email.encoders.html#id2). Это хорошая кодировка, когда большая часть полезной нагрузки – обычные печатные данные, но содержит несколько непечатаемых символов.3031#### `email.encoders.encode_base64(msg)`3233Кодирует полезную нагрузку в формат base64 и устанавливает заголовок *Content-Transfer-Encoding* в `base64`. Это хорошая кодировка, когда большая часть полезной нагрузки – непечатаемые данные, так как она более компактна, чем quoted-printable. Недостаток кодировки base64 в том, что она делает текст нечитаемым для человека.3435#### `email.encoders.encode_7or8bit(msg)`3637Эта функция на самом деле не изменяет полезную нагрузку сообщения, но устанавливает заголовок *Content-Transfer-Encoding* в `7bit` или `8bit` в зависимости от данных полезной нагрузки.3839#### `email.encoders.encode_noop(msg)`4041Эта функция ничего не делает; она даже не устанавливает заголовок *Content-Transfer-Encoding*.4243Сноски4445**[1](https://python-all.ru/3.9/library/email.encoders.html#id1)**4647Обратите внимание, что кодирование с помощью [`encode_quopri()`](https://python-all.ru/3.9/library/email.encoders.html#email.encoders.encode_quopri) также кодирует все символы табуляции и пробелы в данных.48