Skip to main content

19.1.5. 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() 方法,也可能引发异常。

下面是 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() 方法可能返回假,即使其内容类型声称是 multipart

  • InvalidBase64PaddingDefect - 当解码一个base64编码字节的块时,填充不正确。添加足够的填充以执行解码,但是所得到的解码字节可能是无效的。

  • InvalidBase64CharactersDefect - 当解码一个base64编码字节块时,会遇到base64字母以外的字符。字符被忽略,但是生成的解码字节可能无效。