19.1.5. email.errors
: 异常和缺陷类¶
源代码: Lib/email/errors.py
以下异常类在 email.errors
模块中定义:
-
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
– A message claimed to be a multipart, but no subparts were found. Note that when a message has this defect, itsis_multipart()
method may return false even though its content type claims to be multipart.InvalidBase64PaddingDefect
– 当解码一个 base64 编码的字节分块时,填充的数据不正确。 虽然添加了足够的填充数据以执行解码,但作为结果的已解码字节串可能无效。InvalidBase64CharactersDefect
– 当解码一个 base64 编码的字节分块时,遇到了 base64 字符表以外的字符。 这些字符会被忽略,但作为结果的已解码字节串可能无效。InvalidBase64LengthDefect
– 当解码一个 base64 编码的字节分块时,非填充 base64 字符的数量无效(比 4 的倍数多 1)。 已编码分块会保持原样。