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

19.1.11. email.errors: классы исключений и дефектовemail.errors: Exception and Defect classes

В модуле email.errors определены следующие классы исключений:

exception email.errors.MessageError

Это базовый класс для всех исключений, которые пакет email может возбуждать. Он производный от стандартного класса Exception и не определяет дополнительных методов.

exception email.errors.MessageParseError

Это базовый класс для исключений, возбуждаемых классом Parser. Он производный от MessageError.

exception email.errors.HeaderParseError

Возбуждается при некоторых ошибках при разборе заголовков RFC 2822 сообщения. Этот класс производный от MessageParseError. Он может быть возбуждён из методов Parser.parse или Parser.parsestr.

Ситуации, в которых он может быть вызван, включают обнаружение конвертного заголовка после первого RFC 2822 заголовка сообщения, обнаружение строки продолжения до того, как найден первый RFC 2822 заголовок, или обнаружение строки в заголовках, которая не является ни заголовком, ни строкой продолжения.

exception email.errors.BoundaryError

Возбуждается при некоторых ошибках при разборе заголовков RFC 2822 сообщения. Этот класс производный от MessageParseError. Он может быть возбуждён из методов Parser.parse или Parser.parsestr.

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

exception email.errors.MultipartConversionError

Возбуждается, когда к объекту Message добавляется полезная нагрузка с помощью add_payload(), но нагрузка уже является скаляром, а основной тип содержимого сообщения (Content-Type) не равен multipart или отсутствует. MultipartConversionError множественно наследует от MessageError и встроенного TypeError.

Поскольку Message.add_payload() устарел, это исключение редко возбуждается на практике. Однако исключение может также возбуждаться, если метод attach() вызывается на экземпляре класса, производного от MIMENonMultipart (например, MIMEImage).

Вот список дефектов, которые 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() может возвращать false, даже если его тип содержимого заявляет multipart.

  • InvalidBase64PaddingDefect – При декодировании блока байтов, закодированных в base64, заполнение было некорректным. Добавляется достаточное заполнение для выполнения декодирования, но результирующие декодированные байты могут быть недействительными.

  • InvalidBase64CharactersDefect – При декодировании блока байтов, закодированных в base64, были встречены символы за пределами алфавита base64. Эти символы игнорируются, но результирующие декодированные байты могут быть недействительными.