19.1.11. email.errors: 异常和缺陷类

源代码: Lib/email/errors.py


以下异常类在 email.errors 模块中定义:

exception email.errors.MessageError

这是 email 包可以引发的所有异常的基类。 它源自标准异常 Exception 类,这个类没有定义其他方法。

exception email.errors.MessageParseError

This is the base class for exceptions raised by the Parser class. It is derived from MessageError.

exception email.errors.HeaderParseError

Raised under some error conditions when parsing the RFC 2822 headers of a message, this class is derived from MessageParseError. It can be raised from the Parser.parse or Parser.parsestr methods.

Situations where it can be raised include finding an envelope header after the first RFC 2822 header of the message, finding a continuation line before the first RFC 2822 header is found, or finding a line in the headers which is neither a header or a continuation line.

exception email.errors.BoundaryError

Raised under some error conditions when parsing the RFC 2822 headers of a message, this class is derived from MessageParseError. It can be raised from the Parser.parse or Parser.parsestr methods.

Situations where it can be raised include not being able to find the starting or terminating boundary in a multipart/* message when strict parsing is used.

exception email.errors.MultipartConversionError

当使用 add_payload() 将有效负载添加到 Message 对象时,有效负载已经是一个标量,而消息的 Content-Type 主类型不是 multipart 或者缺少时触发该异常。 MultipartConversionError 多重继承自 MessageError 和内置的 TypeError

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

Here’s the list of the defects that the FeedParser can find while parsing messages. Note that the defects are added to the message where the problem was found, so for example, if a message nested inside a multipart/alternative had a malformed header, that nested message object would have a defect, but the containing messages would not.

All defect classes are subclassed from email.errors.MessageDefect, but this class is not an exception!

  • NoBoundaryInMultipartDefect – 一条消息宣称有多个部分,但却没有 boundary 形参。

  • StartBoundaryNotFoundDefect – 在 Content-Type 标头中宣称的开始边界无法被找到。

  • CloseBoundaryNotFoundDefect – 找到了开始边界,但相应的结束边界无法被找到。

    3.3 新版功能.

  • FirstHeaderLineIsContinuationDefect – 消息以一个继续行作为其第一个标头行。

  • MisplacedEnvelopeHeaderDefect - 在标头块中间发现了一个 “Unix From” 标头。

  • MissingHeaderBodySeparatorDefect - 在解析没有前缀空格但又不包含 ‘:’ 的标头期间找到一行内容。 解析将假定该行表示消息体的第一行以继续执行。

    3.3 新版功能.

  • MalformedHeaderDefect – 找到一个缺失了冒号或格式错误的标头。

    3.3 版后已移除: 此缺陷在近几个 Python 版本中已不再使用。

  • MultipartInvariantViolationDefect – A message claimed to be a multipart, but no subparts were found. Note that when a message has this defect, its is_multipart() method may return false even though its content type claims to be multipart.

  • InvalidBase64PaddingDefect – 当解码一个 base64 编码的字节分块时,填充的数据不正确。 虽然添加了足够的填充数据以执行解码,但作为结果的已解码字节串可能无效。

  • InvalidBase64CharactersDefect – 当解码一个 base64 编码的字节分块时,遇到了 base64 字符表以外的字符。 这些字符会被忽略,但作为结果的已解码字节串可能无效。