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

19.1.11. email.errors: классы исключений и Defectemail.errors: Exception and Defect classes

Исходный код: Lib/email/errors.py


В модуле 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. Эти символы игнорируются, но полученные декодированные байты могут быть недействительными.