email.encoders
: 編碼器?
此模塊是舊版 (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í)際上由 MIMEAudio
和 MIMEImage
類構(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è)為
7bit
或8bit
。
- 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)行編碼。