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

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

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

exception email.errors.MessageDefect

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

exception email.errors.HeaderDefect

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

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

所有缺陷类都是从 email.errors.MessageDefect 派生的。

  • NoBoundaryInMultipartDefect – 一条消息声称是多部分消息,但没有 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 – 在解码无效或无法解析的日期字段时。原始值保持原样。