email.errors: Clases de excepción y defecto

Código fuente: Lib/email/errors.py


Las siguientes clases de excepción se definen en el módulo email.errors:

exception email.errors.MessageError

Esta es la clase base para todas las excepciones que el paquete email puede lanzar. Se deriva de la clase estándar Exception y no define métodos adicionales.

exception email.errors.MessageParseError

Esta es la clase base para las excepciones generadas por la clase Parser. Se deriva de MessageError. Esta clase también es utilizada internamente por el analizador sintáctico utilizado por headerregistry.

exception email.errors.HeaderParseError

Lanzada en algunas condiciones de error al analizar los encabezados RFC 5322 de un mensaje, esta clase se deriva de MessageParseError. El método set_boundary() lanzará este error si el tipo de contenido es desconocido cuando se llama al método. Header puede lanzar este error para ciertos errores de decodificación de base64, y cuando se intenta crear un encabezado que parece contener un encabezado incrustado (es decir, hay lo que se supone que es un línea de continuación que no tiene espacios en blanco iniciales y parece un encabezado).

exception email.errors.BoundaryError

Deprecada y no utilizada actualmente.

exception email.errors.MultipartConversionError

Se lanza cuando se agrega una carga útil (payload) a un objeto Message usando add_payload(), pero la carga útil ya es un número escalar y el tipo principal del mensaje Content-Type no es multipart ni perdido (missing). MultipartConversionError hereda al mismo tiempo de MessageError y el incorporado TypeError.

Dado que Message.add_payload() está en desuso, esta excepción rara vez se presenta en la práctica. Sin embargo, la excepción también se puede lanzar si se llama al método attach() en una instancia de una clase derivada de MIMENonMultipart (por ejemplo MIMEImage).

Aquí está la lista de defectos que FeedParser puede encontrar mientras analiza mensajes. Tenga en cuenta que los defectos se agregan al mensaje donde se encontró el problema, por ejemplo, si un mensaje anidado dentro de un multipart/alternative tenía un encabezado mal formado, ese objeto de mensaje anidado tendría un defecto, pero el contenido los mensajes no lo harían.

Todas las clases de defectos se derivan de email.errors.MessageDefect.

  • NoBoundaryInMultipartDefect – Un mensaje que se dice que es multiparte, pero que no tiene el parámetro boundary.

  • StartBoundaryNotFoundDefect – El límite de inicio reclamado en el encabezado Content-Type nunca se encontró.

  • CloseBoundaryNotFoundDefect – Se encontró un límite de inicio, pero nunca se encontró un límite cercano correspondiente.

    Nuevo en la versión 3.3.

  • FirstHeaderLineIsContinuationDefect – El mensaje tenía una línea de continuación como primera línea de encabezado.

  • MisplacedEnvelopeHeaderDefect – Se encontró un encabezado «Unix From» en medio de un bloque de encabezado.

  • MissingHeaderBodySeparatorDefect - Se encontró una línea al analizar sintácticamente los encabezados que no tenían espacios en blanco iniciales pero que no contenían “:”. El análisis continúa asumiendo que la línea representa la primera línea del cuerpo.

    Nuevo en la versión 3.3.

  • MalformedHeaderDefect – Se encontró un encabezado al que le faltaban dos puntos o tenía un formato incorrecto.

    Obsoleto desde la versión 3.3: Este defecto no se ha utilizado por varias versiones de Python.

  • MultipartInvariantViolationDefect– Un mensaje que se afirma ser multipart, pero no se encontraron subpartes. Tenga en cuenta que cuando un mensaje tiene este defecto, su método is_multipart() puede retornar False aunque su tipo de contenido afirma ser multipart.

  • InvalidBase64PaddingDefect – Al decodificar un bloque de bytes codificados en base64, el relleno no era correcto. Se agrega suficiente relleno (padding) para realizar la decodificación, pero los bytes decodificados resultantes pueden no ser válidos.

  • InvalidBase64CharactersDefect – Al decodificar un bloque de bytes codificados en base64, se encontraron caracteres fuera del alfabeto base64. Los caracteres se ignoran, pero los bytes decodificados resultantes pueden no ser válidos.

  • InvalidBase64LengthDefect – Al decodificar un bloque de bytes codificados en base64, el número de caracteres base64 sin relleno no era válido (1 más que un múltiplo de 4). El bloque codificado se mantuvo tal cual.

  • InvalidDateDefect – Al decodificar una fecha no válida o un campo no parseable. El valor original se mantiene tal cual.