email パッケージ バージョン 1 は、Python 2.2.1 リリースの
ときまでバンドルされていました。バージョン 2 は Python 2.3 リリース用に
開発され、Python 2.2.2 にバックポートされたものです。
また、これは distutils ベースの独立したパッケージとしても配布されており、
Python 2.1 以降で使用することができます。
email バージョン 3.0 は Python 2.4 とともにリリースされました。
また、これは distutils ベースの独立したパッケージとしても配布されており、
Python 2.3 以降で使用することができます。
email バージョン 3 と バージョン 2 との違いは以下のようなものです:
- FeedParser クラスが新しく導入され、Parser クラスは
FeedParser を使って実装されるようになりました。このパーザは
non-strict なものであり、解析はベストエフォート方式でおこなわれ
解析中に例外を発生させることはありません。解析中に発見された問題は
そのメッセージの defect (障害) 属性に保存されます。
- バージョン 2 で DeprecationWarning を発生していた API は
すべて撤去されました。以下のものが含まれています: MIMEText
コンストラクタに渡す引数 _encoder、Message.add_payload() メソッド、
Utils.dump_address_pair() 関数、そして Utils.decode() と
Utils.encode() です。
- 新しく以下の関数が DeprecationWarning を発生するようになりました:
Generator.__call__(), Message.get_type(),
Message.get_main_type(), Message.get_subtype(), そして
Parser クラスに対する strict 引数です。これらは email 3.1 では
撤去される予定です。
- Python 2.3 以前はサポートされなくなりました。
email バージョン 2 と バージョン 1 との違いは以下のようなものです:
- email.Header モジュールおよび email.Charset モジュールが
追加されています。
- Message インスタンスの Pickle 形式が変わりました。
が、これは正式に定義されたことは一度もないので (そしてこれからも)、
この変更は互換性の欠如とはみなされていません。ですがもし
お使いのアプリケーションが Message インスタンスを
pickle あるいは unpickle しているなら、現在 email バージョン 2 では
プライベート変数 _charset および _default_type を
含むようになったということに注意してください。
- Message クラス中のいくつかのメソッドは推奨されなくなったか、
あるいは呼び出し形式が変更になっています。また、多くの新しいメソッドが
追加されています。詳しくは Message クラスの文書を参照してください。
これらの変更は完全に下位互換になっているはずです。
- message/rfc822 形式のコンテナは、
見た目上のオブジェクト構造が変わりました。email バージョン 1 では
この content type はスカラー形式のペイロードとして表現されていました。
つまり、コンテナメッセージの is_multipart() は
false を返し、get_payload() はリストオブジェクトではなく
単一の Message インスタンスを直接返すようになっていたのです。
この構造はパッケージ中のほかの部分と整合がとれていなかったため、
message/rfc822 形式のオブジェクト表現形式が
変更されました。email バージョン 2 では、コンテナは
is_multipart() に True
を返します。
また get_payload() はひとつの Message インスタンスを
要素とするリストを返すようになりました。
注意: ここは下位互換が完全には成りたたなくなっている部分のひとつです。
けれどもあらかじめ get_payload() が返すタイプをチェックするように
なっていれば問題にはなりません。ただ message/rfc822 形式の
コンテナを Message インスタンスにじかに set_payload()
しないようにさえすればよいのです。
- Parser コンストラクタに strict 引数が
追加され、parse() および parsestr() メソッドには
headersonly 引数がつきました。strict フラグは
また email.message_from_file() と
email.message_from_string() にも追加されています。
- Generator.__call__() はもはや推奨されなくなりました。
かわりに Generator.flatten() を使ってください。また、
Generator クラスには clone() メソッドが追加されています。
- email.Generator モジュールに DecodedGenerator クラスが
加わりました。
- 中間的な基底クラスである MIMENonMultipart および
MIMEMultipart がクラス階層の中に追加され、
ほとんどの MIME 関係の派生クラスがこれを介するようになっています。
- MIMEText コンストラクタの _encoder 引数は
推奨されなくなりました。いまやエンコーダは _charset 引数に
もとづいて暗黙のうちに決定されます。
- email.Utils モジュールにおける以下の関数は
推奨されなくなりました: dump_address_pairs()、
decode()、 および encode()。
また、このモジュールには以下の関数が追加されています:
make_msgid()、 decode_rfc2231()、
encode_rfc2231() そして decode_params()。
- Public ではない関数 email.Iterators._structure() が
追加されました。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。