email.errors: Классы исключений и дефектов


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

exception email.errors.MessageError

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

exception email.errors.MessageParseError

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

exception email.errors.HeaderParseError

Поднятый в случае некоторого состояния ошибки, когда парсинг заголовки RFC 5322 сообщения, этот класс получен из MessageParseError. Метод set_boundary() вызовет эту ошибку, если тип содержимого неизвестен при вызове метода. Header может вызвать эту ошибку для определенных ошибок декодирования base64, и когда предпринята попытка создать заголовок, который, по-видимому, содержит встроенный заголовок (то есть существует то, что должно быть линией продолжения, которая не имеет ведущего пробела и выглядит как заголовок).

exception email.errors.BoundaryError

Устарело и больше не используемый.

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

  • InvalidBase64LengthDefect – при декодировании блока base64 кодированный байт число не заполняющих base64 символов было неверным (1 больше, чем кратное 4). Блок кодированный был сохранен как есть.