email.encoders: エンコーダ

ソースコード: Lib/email/encoders.py


This module is part of the legacy (Compat32) email API. In the new API the functionality is provided by the cte parameter of the set_content() method.

This module is deprecated in Python 3. The functions provided here should not be called explicitly since the MIMEText class sets the content type and CTE header using the _subtype and _charset values passed during the instaniation of that class.

この節の以降のテキストはモジュールの元々のドキュメントです。

何もないところから Message を作成するときしばしば必要になるのが、ペイロードをメールサーバに通すためにエンコードすることです。これはとくにバイナリデータを含んだ image/*text/* タイプのメッセージで必要です。

The email package provides some convenient encoders in its encoders module. These encoders are actually used by the MIMEAudio and MIMEImage class constructors to provide default encodings. All encoder functions take exactly one argument, the message object to encode. They usually extract the payload, encode it, and reset the payload to this newly encoded value. They should also set the Content-Transfer-Encoding header as appropriate.

マルチパートメッセージにこれら関数を使うことは全く無意味です。それらは各々のサブパートごとに適用されるべきものです。メッセージがマルチパートのものを渡すと 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() を使ってエンコードすると、データ中のタブ文字や空白文字もエンコードされます。