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

---

# 19.1.11. [`email.errors`](https://python-all.ru/3.4/library/email.errors.html#module-email.errors): классы исключений и дефектов

В модуле [`email.errors`](https://python-all.ru/3.4/library/email.errors.html#module-email.errors) определены следующие классы исключений:

#### `exception email.errors.MessageError`

Это базовый класс для всех исключений, которые пакет [`email`](https://python-all.ru/3.4/library/email.html#module-email) может возбуждать. Он производный от стандартного класса [`Exception`](https://python-all.ru/3.4/library/exceptions.html#Exception) и не определяет дополнительных методов.

#### `exception email.errors.MessageParseError`

Это базовый класс для исключений, возбуждаемых классом [`Parser`](https://python-all.ru/3.4/library/email.parser.html#email.parser.Parser). Он производный от [`MessageError`](https://python-all.ru/3.4/library/email.errors.html#email.errors.MessageError).

#### `exception email.errors.HeaderParseError`

Возбуждается при некоторых ошибках при разборе заголовков [**RFC 2822**](https://python-all.ru/3.4/library/email.errors.html) сообщения. Этот класс производный от [`MessageParseError`](https://python-all.ru/3.4/library/email.errors.html#email.errors.MessageParseError). Он может быть возбуждён из методов [`Parser.parse`](https://python-all.ru/3.4/library/email.parser.html#email.parser.Parser.parse) или [`Parser.parsestr`](https://python-all.ru/3.4/library/email.parser.html#email.parser.Parser.parsestr).

Ситуации, в которых он может быть вызван, включают обнаружение конвертного заголовка после первого [**RFC 2822**](https://python-all.ru/3.4/library/email.errors.html) заголовка сообщения, обнаружение строки продолжения до того, как найден первый [**RFC 2822**](https://python-all.ru/3.4/library/email.errors.html) заголовок, или обнаружение строки в заголовках, которая не является ни заголовком, ни строкой продолжения.

#### `exception email.errors.BoundaryError`

Возбуждается при некоторых ошибках при разборе заголовков [**RFC 2822**](https://python-all.ru/3.4/library/email.errors.html) сообщения. Этот класс производный от [`MessageParseError`](https://python-all.ru/3.4/library/email.errors.html#email.errors.MessageParseError). Он может быть возбуждён из методов [`Parser.parse`](https://python-all.ru/3.4/library/email.parser.html#email.parser.Parser.parse) или [`Parser.parsestr`](https://python-all.ru/3.4/library/email.parser.html#email.parser.Parser.parsestr).

Ситуации, в которых он может быть вызван, включают невозможность найти начальную или конечную границу в *multipart/\** сообщении при строгом разборе.

#### `exception email.errors.MultipartConversionError`

Возбуждается, когда к объекту [`Message`](https://python-all.ru/3.4/library/email.message.html#email.message.Message) добавляется полезная нагрузка с помощью `add_payload()`, но нагрузка уже является скаляром, а основной тип содержимого сообщения (*Content-Type*) не равен *multipart* или отсутствует. [`MultipartConversionError`](https://python-all.ru/3.4/library/email.errors.html#email.errors.MultipartConversionError) множественно наследует от [`MessageError`](https://python-all.ru/3.4/library/email.errors.html#email.errors.MessageError) и встроенного [`TypeError`](https://python-all.ru/3.4/library/exceptions.html#TypeError).

Поскольку `Message.add_payload()` устарел, это исключение редко возбуждается на практике. Однако исключение может также возбуждаться, если метод [`attach()`](https://python-all.ru/3.4/library/email.message.html#email.message.Message.attach) вызывается на экземпляре класса, производного от [`MIMENonMultipart`](https://python-all.ru/3.4/library/email.mime.html#email.mime.nonmultipart.MIMENonMultipart) (например, [`MIMEImage`](https://python-all.ru/3.4/library/email.mime.html#email.mime.image.MIMEImage)).

Вот список дефектов, которые [`FeedParser`](https://python-all.ru/3.4/library/email.parser.html#email.parser.FeedParser) может обнаружить при разборе сообщений. Обратите внимание, что дефекты добавляются к тому сообщению, где была найдена проблема; так, например, если сообщение, вложенное в *multipart/alternative*, имело некорректный заголовок, то этот вложенный объект сообщения будет содержать дефект, а содержащие его сообщения – нет.

Все классы дефектов являются подклассами `email.errors.MessageDefect`, но этот класс *не* является исключением!

- `NoBoundaryInMultipartDefect` – Сообщение заявляло, что оно является multipart, но не имело параметра *boundary*.
- `StartBoundaryNotFoundDefect` – Начальная граница, указанная в заголовке *Content-Type*, не была найдена.
- `CloseBoundaryNotFoundDefect` – Начальная граница была найдена, но соответствующая закрывающая граница не была найдена.

  Новое в версии 3.3.
- `FirstHeaderLineIsContinuationDefect` – Сообщение имело строку продолжения в качестве первой строки заголовка.
- `MisplacedEnvelopeHeaderDefect` – Заголовок “Unix From” был найден в середине блока заголовков.
- `MissingHeaderBodySeparatorDefect` – При разборе заголовков была найдена строка, не имеющая начальных пробелов, но не содержащая двоеточия. Разбор продолжается в предположении, что эта строка является первой строкой тела сообщения.

  Новое в версии 3.3.
- `MalformedHeaderDefect` – Был найден заголовок, в котором отсутствовало двоеточие или который был иным образом некорректен.

  Устарело с версии 3.3: Этот дефект не использовался на протяжении нескольких версий Python.
- `MultipartInvariantViolationDefect` – Сообщение заявляло, что оно является *multipart*, но подчасти не были найдены. Обратите внимание, что когда сообщение имеет этот дефект, его метод [`is_multipart()`](https://python-all.ru/3.4/library/email.message.html#email.message.Message.is_multipart) может возвращать false, даже если его тип содержимого заявляет *multipart*.
- `InvalidBase64PaddingDefect` – При декодировании блока байтов, закодированных в base64, заполнение было некорректным. Добавляется достаточное заполнение для выполнения декодирования, но результирующие декодированные байты могут быть недействительными.
- `InvalidBase64CharactersDefect` – При декодировании блока байтов, закодированных в base64, были встречены символы за пределами алфавита base64. Эти символы игнорируются, но результирующие декодированные байты могут быть недействительными.
