19.1.10. email.encoders
: エンコーダ¶
ソースコード: Lib/email/encoders.py
何もないところから Message
を作成するときしばしば必要になるのが、ペイロードをメールサーバに通すためにエンコードすることです。これはとくにバイナリデータを含んだ image/* や text/* タイプのメッセージで必要です。
email
パッケージでは、 encoders
モジュールにおいていくかの便宜的なエンコーディングをサポートしています。実際にはこれらのエンコーダは MIMEAudio
および MIMEImage
クラスのコンストラクタでデフォルトエンコーダとして使われています。すべてのエンコーディング関数は、エンコードするメッセージオブジェクトひとつだけを引数にとります。これらはふつうペイロードを取りだし、それをエンコードして、ペイロードをエンコードされたものにセットしなおします。これらはまた Content-Transfer-Encoding ヘッダを適切な値に設定します。
マルチパートメッセージにこれら関数を使うことは全く無意味です。それらは各々のサブパートごとに適用されるべきものです。メッセージがマルチパートのものを渡すと TypeError
が発生します。
提供されているエンコーディング関数は以下のとおりです:
-
email.encoders.
encode_quopri
(msg)¶ ペイロードを quoted-printable 形式にエンコードし、 Content-Transfer-Encoding ヘッダを
quoted-printable
[1] に設定します。これはそのペイロードのほとんどが通常の印刷可能な文字からなっているが、印刷不可能な文字がすこしだけあるときのエンコード方法として適しています。
-
email.encoders.
encode_base64
(msg)¶ ペイロードを base64 形式でエンコードし、 Content-Transfer-Encoding ヘッダを
base64
に変更します。これはペイロード中のデータのほとんどが印刷不可能な文字である場合に適しています。 quoted-printable 形式よりも結果としてはコンパクトなサイズになるからです。 base64 形式の欠点は、これが人間にはまったく読めないテキストになってしまうことです。
-
email.encoders.
encode_7or8bit
(msg)¶ これは実際にはペイロードを変更はしませんが、ペイロードの形式に応じて Content-Transfer-Encoding ヘッダを
7bit
あるいは8bit
に適した形に設定します。
-
email.encoders.
encode_noop
(msg)¶ これは何もしないエンコーダです。 Content-Transfer-Encoding ヘッダを設定さえしません。
脚注
[1] | 注意: encode_quopri() を使ってエンコードすると、データ中のタブ文字や空白文字もエンコードされます。 |