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 标头时在某些错误条件下引发,这个类派生自 MessageParseErrorset_boundary() 方法在调用时,如果内容类型未知,则会引发此错误。Header 可能会因某些 base64 解码错误,以及尝试创建看起来包含嵌入式标头的标头(即,本应是延续行,但没有前导空格且看起来像标头)时引发此错误。

exception email.errors.BoundaryError

已弃用,不再使用。

exception email.errors.MultipartConversionError

当使用 add_payload() 将有效负载添加到 Message 对象,但该有效负载已经是标量且消息的 Content-Type 主要类型不是 multipart 或缺失时引发。MultipartConversionError 多重继承自 MessageError 和内置的 TypeError

由于 Message.add_payload() 已弃用,因此实际上很少引发此异常。但是,如果对派生自 MIMENonMultipart (例如 MIMEImage) 的类实例调用 attach() 方法,也可能引发此异常。

exception email.errors.HeaderWriteError

generator 输出标头时发生错误时引发。

exception email.errors.MessageDefect

这是在解析电子邮件消息时发现的所有缺陷的基类。它派生自 ValueError

exception email.errors.HeaderDefect

这是在解析电子邮件标头时发现的所有缺陷的基类。它派生自 MessageDefect

这是 FeedParser 在解析消息时可以发现的缺陷列表。请注意,缺陷被添加到发现问题的消息中,因此,例如,如果嵌套在 multipart/alternative 中的消息有一个格式错误的标头,则该嵌套消息对象将有一个缺陷,但包含的消息则不会。

所有缺陷类都从 email.errors.MessageDefect 继承。

  • NoBoundaryInMultipartDefect – 消息声称是 multipart,但没有 boundary 参数。

  • StartBoundaryNotFoundDefectContent-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 字符数量无效(比 4 的倍数多 1)。编码块保持原样。

  • InvalidDateDefect – 当解码无效或无法解析的日期字段时。原始值保持原样。