email.encoders: 編碼器?

源代碼: Lib/email/encoders.py


此模塊是舊版 (Compat32) email API 的組成部分。 在新版 API 中將由 set_content() 方法的 cte 形參提供該功能。

此模塊在 Python 3 中已棄用。 這里提供的函數(shù)不應(yīng)被顯式地調(diào)用,因?yàn)?MIMEText 類會(huì)在類實(shí)例化期間使用 _subtype_charset 值來(lái)設(shè)置內(nèi)容類型和 CTE 標(biāo)頭。

本節(jié)中的其余文本是此模塊的原始文檔。

當(dāng)創(chuàng)建全新的 Message 對(duì)象時(shí),你經(jīng)常需要對(duì)載荷編碼以便通過(guò)兼容的郵件服務(wù)器進(jìn)行傳輸。 對(duì)于包含二進(jìn)制數(shù)據(jù)的 image/*text/* 類型的消息來(lái)說(shuō)尤其如此。

email 包在其 encoders 模塊中提供了一些方便的編碼器。 這些編碼器實(shí)際上由 MIMEAudioMIMEImage 類構(gòu)造器所使用以提供默認(rèn)編碼格式。 所有編碼器函數(shù)都只接受一個(gè)參數(shù),即要編碼的消息對(duì)象。 它們通常會(huì)提取有效載荷,對(duì)其進(jìn)行編碼,并將載荷重置為這種新編碼的值。 它們還應(yīng)當(dāng)相應(yīng)地設(shè)置 Content-Transfer-Encoding 標(biāo)頭。

請(qǐng)注意,這些函數(shù)對(duì)于多段消息沒(méi)有意義。 它們必須應(yīng)用到各個(gè)單獨(dú)的段上面,而不是整體。如果直接傳遞一個(gè)多段類型的消息,會(huì)產(chǎn)生一個(gè) TypeError 錯(cuò)誤。

下面是提供的編碼函數(shù):

email.encoders.encode_quopri(msg)?

將有效數(shù)據(jù)編碼為經(jīng)轉(zhuǎn)換的可打印形式,并將 Content-Transfer-Encoding 標(biāo)頭設(shè)置為 quoted-printable 1。 當(dāng)大多數(shù)實(shí)際的數(shù)據(jù)是普通的可打印數(shù)據(jù)但包含少量不可打印的字符時(shí),這是一個(gè)很好的編碼。

email.encoders.encode_base64(msg)?

將有效載荷編碼為 base64 形式,并將 Content-Transfer-Encoding 標(biāo)頭設(shè)為 base64。 當(dāng)你的載荷主要包含不可打印數(shù)據(jù)時(shí)這是一種很好用的編碼格式,因?yàn)樗?quoted-printable 更緊湊。 base64 編碼格式的缺點(diǎn)是它會(huì)使文本變成人類不可讀的形式。

email.encoders.encode_7or8bit(msg)?

此函數(shù)并不實(shí)際改變消息的有效載荷,但它會(huì)基于載荷數(shù)據(jù)將 Content-Transfer-Encoding 標(biāo)頭相應(yīng)地設(shè)為 7bit8bit。

email.encoders.encode_noop(msg)?

此函數(shù)什么都不會(huì)做;它甚至不會(huì)設(shè)置 Content-Transfer-Encoding 標(biāo)頭。

備注

1

請(qǐng)注意使用 encode_quopri() 編碼格式還會(huì)對(duì)數(shù)據(jù)中的所有制表符和空格符進(jìn)行編碼。