"email.encoders"：編碼器
************************

**原始碼：**Lib/email/encoders.py

======================================================================

此模組是舊版 ("Compat32") 電子郵件 API 的一部分。在新 API 中，此功能由
"set_content()" 方法的 *cte* 參數提供。

此模組在 Python 3 中已棄用。不應明確呼叫此處提供的函式，因為
"MIMEText" 類別使用在該類別的實例化過程中傳遞的 *_subtype* 和
*_charset* 值來設定內容類型 (content type) 和 CTE 標頭。

本節中的其餘文字是該模組的原始文件。

從零開始建立 "Message" 物件時，你通常需要對負載 (payload) 進行編碼，以
便透過相容的郵件伺服器進行傳輸。對於包含二進位資料的 *image/** 和
*text/** 類型的訊息尤其如此。

"email" 套件在其 "encoders" 模組中提供了一些方便的編碼器。這些編碼器實
際上由 "MIMEAudio" 和 "MIMEImage" 類別建構函式使用來提供預設編碼。所有
編碼器函式都只接受一個引數，也就是要編碼的訊息物件。他們通常會提取負載
、對其進行編碼，然後將負載重設為新編碼的值。他們也應適當地設定
*Content-Transfer-Encoding* 標頭。

請注意，這些函式對於多部分訊息 (multipart message) 沒有意義。它們必須
應用於各個子部分，如果傳遞類型為多部分訊息，則會引發 "TypeError"。

以下是提供的編碼函式：

email.encoders.encode_quopri(msg)

   將負載編碼為可列印字元 (quoted-printable) 形式，並將 *Content-
   Transfer-Encoding* 標頭設定為 "quoted-printable" [1]。當大部分負載
   是正常的可列印資料，但包含一些不可列印的字元時，這是一種很好的編碼
   。

email.encoders.encode_base64(msg)

   將負載編碼為 base64 形式，並將 *Content-Transfer-Encoding* 標頭設定
   為 "base64"。當大部分負載是不可列印資料時，這是一種很好的編碼，因為
   它是比可列印字元更緊湊的形式。Base64 編碼的缺點是它使文字無法讓人類
   可讀。

email.encoders.encode_7or8bit(msg)

   這實際上並沒有修改訊息的負載，但它確實根據負載資料將 *Content-
   Transfer-Encoding* 標頭設定為適當的 "7bit" 或 "8bit"。

email.encoders.encode_noop(msg)

   這沒有任何作用；它甚至沒有設定 *Content-Transfer-Encoding* 標頭。

-[ 註腳 ]-

[1] 請注意，使用 "encode_quopri()" 進行編碼也會對資料中的所有定位字元
    (tab) 和空格字元進行編碼。
