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

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


Следующие классы исключений определены в модуле 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). Закодированный блок был сохранен в исходном виде.

  • InvalidDateDefect – При декодировании недопустимого или непарсируемого поля даты. Исходное значение сохраняется как есть.

Вернуться на верх