新しいメッセージオブジェクト構造は Message インスタンスを 作成することにより作れます。ここに添付ファイルやその他適切なものを すべて手で加えてやればよいのです。MIME メッセージの場合、 email パッケージはこれらを簡単におこなえるようにするために いくつかの便利なサブクラスを提供しています。これらのサブクラスは email パッケージ内にある、 そのクラスと同じ名前をもつモジュールから import してやります。 たとえば:
import email.MIMEImage.MIMEImage
または以下のようにします:
from email.MIMEText import MIMEText
以下がそのサブクラスです:
_maintype, _subtype, **_params) |
_maintype は Content-Type: の主形式 (maintype) であり (text や image など)、_subtype は Content-Type: の副形式 (subtype) です (plain や gif など)。 _params は各パラメータのキーと値を格納した辞書であり、 これは直接 Message.add_header() に渡されます。
MIMEBase クラスはつねに
(_maintype、 _subtype、 および _params にもとづいた)
Content-Type: ヘッダと、
MIME-Version: ヘッダ (必ず 1.0
に設定される) を追加します。
) |
バージョン 2.2.2 で 新たに追加 された仕様です。
[subtype[, boundary[, _subparts[, _params]]]]) |
MIMEBase のサブクラスで、これは multipart 形式の MIME メッセージのための中間的な基底クラスです。オプション引数 _subtype は デフォルトでは mixed になっていますが、そのメッセージの副形式 (subtype) を 指定するのに使うことができます。メッセージオブジェクトには multipart/_subtype という値をもつ Content-Type: ヘッダとともに、 MIME-Version: ヘッダが追加されるでしょう。
オプション引数 boundary は multipart の境界文字列です。
これが None
の場合 (デフォルト)、境界は必要に応じて計算されます。
_subparts はそのペイロードの subpart の初期値からなるシーケンスです。 このシーケンスはリストに変換できるようになっている必要があります。 新しい subpart はつねに Message.attach() メソッドを使って そのメッセージに追加できるようになっています。
Content-Type: ヘッダに対する追加のパラメータは キーワード引数 _params を介して取得あるいは設定されます。 これはキーワード辞書になっています。
バージョン 2.2.2 で 新たに追加 された仕様です。
_audiodata[, _subtype[, _encoder[, **_params]]]) |
MIMEAudio クラスは MIMENonMultipart のサブクラスで、 主形式 (maintype) が audio の MIME オブジェクトを作成するのに使われます。 _audiodata は実際の音声データを格納した文字列です。 もしこのデータが標準の Python モジュール sndhdr によって 認識できるものであれば、Content-Type: ヘッダの 副形式 (subtype) は自動的に決定されます。 そうでない場合はその画像の形式 (subtype) を _subtype で 明示的に指定する必要があります。副形式が自動的に決定できず、 _subtype の指定もない場合は、TypeError が発生します。
オプション引数 _encoder は呼び出し可能なオブジェクト (関数など) で、 トランスポートのさいに画像の実際のエンコードをおこないます。 このオブジェクトは MIMEAudio インスタンスの引数をひとつだけ取ることができます。 この関数は、与えられたペイロードをエンコードされた形式に変換するのに get_payload() および set_payload() を使う必要があります。 また、これは必要に応じて Content-Transfer-Encoding: あるいは そのメッセージに適した何らかのヘッダを追加する必要があります。 デフォルトのエンコーディングは base64 です。組み込みのエンコーダの詳細については email.Encoders を参照してください。
_params は MIMEBase コンストラクタに直接渡されます。
_imagedata[, _subtype[, _encoder[, **_params]]]) |
MIMEImage クラスは MIMENonMultipart のサブクラスで、 主形式 (maintype) が image の MIME オブジェクトを作成するのに使われます。 _imagedata は実際の画像データを格納した文字列です。 もしこのデータが標準の Python モジュール imghdr によって 認識できるものであれば、Content-Type: ヘッダの 副形式 (subtype) は自動的に決定されます。 そうでない場合はその画像の形式 (subtype) を _subtype で 明示的に指定する必要があります。副形式が自動的に決定できず、 _subtype の指定もない場合は、TypeError が発生します。
オプション引数 _encoder は呼び出し可能なオブジェクト (関数など) で、 トランスポートのさいに画像の実際のエンコードをおこないます。 このオブジェクトは MIMEImage インスタンスの引数をひとつだけ取ることができます。 この関数は、与えられたペイロードをエンコードされた形式に変換するのに get_payload() および set_payload() を使う必要があります。 また、これは必要に応じて Content-Transfer-Encoding: あるいは そのメッセージに適した何らかのヘッダを追加する必要があります。 デフォルトのエンコーディングは base64 です。組み込みのエンコーダの詳細については email.Encoders を参照してください。
_params は MIMEBase コンストラクタに直接渡されます。
_msg[, _subtype]) |
オプション引数 _subtype はそのメッセージの副形式 (subtype) を設定します。 デフォルトではこれは rfc822 になっています。
_text[, _subtype[, _charset]]) |
us-ascii
になっています。
テキストデータに対しては文字コードの推定やエンコードはまったく行われません。
バージョン 2.4 で 変更 された仕様: 以前、推奨されない引数であった _encoding は撤去されました。 エンコーディングは _charset 引数をもとにして暗黙のうちに決定されます。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。