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).

exception email.errors.MessageDefect

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

exception email.errors.HeaderDefect

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

Здесь приведен список дефектов, которые FeedParser может обнаружить при разборе сообщений. Обратите внимание, что дефекты добавляются к сообщению, в котором была обнаружена проблема, поэтому, например, если сообщение, вложенное в multipart/alternative, имеет неправильно сформированный заголовок, то объект вложенного сообщения будет иметь дефект, а содержащие его сообщения - нет.

Все классы дефектов являются подклассами email.errors.MessageDefect.

  • NoBoundaryInMultipartDefect – Сообщение утверждало, что является многокомпонентным, но не имело параметра boundary.

  • StartBoundaryNotFoundDefect – Начальная граница, указанная в заголовке Content-Type, не найдена.

  • CloseBoundaryNotFoundDefect – Была найдена начальная граница, но не была найдена соответствующая близкая граница.

    Added in version 3.3.

  • FirstHeaderLineIsContinuationDefect – Сообщение имело строку продолжения в качестве первой строки заголовка.

  • MisplacedEnvelopeHeaderDefect - В середине блока заголовков обнаружен заголовок «Unix From».

  • MissingHeaderBodySeparatorDefect - При разборе заголовков была обнаружена строка, в которой отсутствуют пробелы, но нет „:“. Парсинг продолжается, предполагая, что эта строка представляет собой первую строку тела.

    Added in version 3.3.

  • MalformedHeaderDefect – Был найден заголовок, в котором отсутствовало двоеточие или он был неправильно оформлен.

    Не рекомендуется, начиная с версии 3.3: Этот дефект не использовался в нескольких версиях Python.

  • MultipartInvariantViolationDefect – Сообщение заявлено как multipart, но не найдено ни одной вложенной части. Обратите внимание, что когда сообщение имеет этот дефект, его метод is_multipart() может вернуть False, даже если тип содержимого утверждает, что это multipart.

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

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

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

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