19.1.5. email.errors:异常和缺陷类 — Python 文档

来自菜鸟教程
Python/docs/3.6/library/email.errors
跳转至:导航、​搜索

19.1.5. 电子邮件错误 : 异常和缺陷类

源代码: :source:`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 派生的类的实例上调用 attach() 方法,也可能引发异常(例如 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 字符数无效(4 的倍数多 1)。 编码块保持原样。