email.errors: 異常和缺陷類(lèi)?

源代碼: Lib/email/errors.py


以下異常類(lèi)在 email.errors 模塊中定義:

exception email.errors.MessageError?

這是 email 包可以引發(fā)的所有異常的基類(lèi)。 它源自標(biāo)準(zhǔn)異常 Exception 類(lèi),這個(gè)類(lèi)沒(méi)有定義其他方法。

exception email.errors.MessageParseError?

這是由 Parser 類(lèi)引發(fā)的異常的基類(lèi)。它派生自 MessageError。 headerregistry 使用的解析器也在內(nèi)部使用這個(gè)類(lèi)。

exception email.errors.HeaderParseError?

在解析消息的 RFC 5322 標(biāo)頭時(shí),某些錯(cuò)誤條件下會(huì)觸發(fā),此類(lèi)派生自 MessageParseError。 如果在調(diào)用方法時(shí)內(nèi)容類(lèi)型未知,則 set_boundary() 方法將引發(fā)此錯(cuò)誤。 當(dāng)嘗試創(chuàng)建一個(gè)看起來(lái)包含嵌入式標(biāo)頭的標(biāo)頭時(shí) Header 可能會(huì)針對(duì)某些 base64 解碼錯(cuò)誤引發(fā)此錯(cuò)誤(也就是說(shuō),應(yīng)該是一個(gè) 沒(méi)有前導(dǎo)空格并且看起來(lái)像標(biāo)題的延續(xù)行)。

exception email.errors.BoundaryError?

已棄用和不再使用的。

exception email.errors.MultipartConversionError?

當(dāng)使用 add_payload() 將有效負(fù)載添加到 Message 對(duì)象時(shí),有效負(fù)載已經(jīng)是一個(gè)標(biāo)量,而消息的 Content-Type 主類(lèi)型不是 multipart 或者缺少時(shí)觸發(fā)該異常。 MultipartConversionError 多重繼承自 MessageError 和內(nèi)置的 TypeError。

由于 Message.add_payload() 已被棄用,此異常實(shí)際上極少會(huì)被引發(fā)。 但是如果在派生自 MIMENonMultipart 的類(lèi) (例如 MIMEImage) 的實(shí)例上調(diào)用 attach() 方法也可以引發(fā)此異常。

以下是 FeedParser 在解析消息時(shí)可發(fā)現(xiàn)的缺陷列表。 請(qǐng)注意這些缺陷會(huì)在問(wèn)題被發(fā)現(xiàn)時(shí)加入到消息中,因此舉例來(lái)說(shuō),如果某條嵌套在 multipart/alternative 中的消息具有錯(cuò)誤的標(biāo)頭,該嵌套消息對(duì)象就會(huì)有一條缺陷,但外層消息對(duì)象則沒(méi)有。

所有缺陷類(lèi)都是 email.errors.MessageDefect 的子類(lèi)。

  • NoBoundaryInMultipartDefect -- 一條消息宣稱(chēng)有多個(gè)部分,但卻沒(méi)有 boundary 形參。

  • StartBoundaryNotFoundDefect -- 在 Content-Type 標(biāo)頭中宣稱(chēng)的開(kāi)始邊界無(wú)法被找到。

  • CloseBoundaryNotFoundDefect -- 找到了開(kāi)始邊界,但相應(yīng)的結(jié)束邊界無(wú)法被找到。

    3.3 新版功能.

  • FirstHeaderLineIsContinuationDefect -- 消息以一個(gè)繼續(xù)行作為其第一個(gè)標(biāo)頭行。

  • MisplacedEnvelopeHeaderDefect - 在標(biāo)頭塊中間發(fā)現(xiàn)了一個(gè) "Unix From" 標(biāo)頭。

  • MissingHeaderBodySeparatorDefect - 在解析沒(méi)有前綴空格但又不包含 ':' 的標(biāo)頭期間找到一行內(nèi)容。 解析將假定該行表示消息體的第一行以繼續(xù)執(zhí)行。

    3.3 新版功能.

  • MalformedHeaderDefect -- 找到一個(gè)缺失了冒號(hào)或格式錯(cuò)誤的標(biāo)頭。

    3.3 版后已移除: 此缺陷在近幾個(gè) Python 版本中已不再使用。

  • MultipartInvariantViolationDefect -- 一條消息宣稱(chēng)為 multipart,但無(wú)法找到任何子部分。 請(qǐng)注意當(dāng)一條消息有此缺陷時(shí),其 is_multipart() 方法可能返回 False,即使其內(nèi)容類(lèi)型宣稱(chēng)為 multipart。

  • InvalidBase64PaddingDefect -- 當(dāng)解碼一個(gè) base64 編碼的字節(jié)分塊時(shí),填充的數(shù)據(jù)不正確。 雖然添加了足夠的填充數(shù)據(jù)以執(zhí)行解碼,但作為結(jié)果的已解碼字節(jié)串可能無(wú)效。

  • InvalidBase64CharactersDefect -- 當(dāng)解碼一個(gè) base64 編碼的字節(jié)分塊時(shí),遇到了 base64 字符表以外的字符。 這些字符會(huì)被忽略,但作為結(jié)果的已解碼字節(jié)串可能無(wú)效。

  • InvalidBase64LengthDefect -- 當(dāng)解碼一個(gè) base64 編碼的字節(jié)分塊時(shí),非填充 base64 字符的數(shù)量無(wú)效(比 4 的倍數(shù)多 1)。 已編碼分塊會(huì)保持原樣。

  • InvalidDateDefect -- 當(dāng)解碼一個(gè)無(wú)效或不可解析的數(shù)據(jù)字段時(shí)引發(fā)。 原始值會(huì)被保持原樣。