11.13.1 メッセージオブジェクト
メッセージクラスのインスタンスには以下のメソッドがあります:
- rewindbody ()
-
メッセージの実体の初めにシークします。ファイルオブジェクトがシークできるときだけ機能します。
- getallmatchingheaders (name)
-
どんな場合でも、nameに一致する全てのヘッダの行の内容のリストを返します。
継続行があろうがなかろうが、それぞれの物理的な行は分割されたリストアイテムです。
nameに一致するヘッダがないとき空のリストが返されます。
- getfirstmatchingheader (name)
-
どんな場合でも、nameに一致する最初のヘッダとその継続する行のリストを返します。
nameに一致するヘッダがないとき空のリストが返されます。
- getrawheader (name)
-
nameに一致する最初のヘッダでコロンの後にはテキストからなる1つの文字列を返します。
これはleading whitespace(解析に必要なものを含む)、行の終わり、
継続行がある場合のLFとwhitespaceを含みます。
nameに一致するヘッダがないならNoneを返します。
- getheader (name)
-
getrawheader(name)に似ています。しかし、最初と続きのwhitespaceは
削除します。内部的なwhitespaceは削除しません。
- getaddr (name)
-
getheader(name)によって返される文字列を解析して
(full name, email address)の組を返します。
nameに一致するヘッダがないとき (None, None)を返します。
あるとき、正式名とアドレスの両方の (たぶん空っぽでない)文字列を返します。
例: 最初mは文字列 'jack@cwi.nl (Jack Jansen)'を含むFromヘッダのとき
m.getaddr('From') は ('Jack Jansen', 'jack@cwi.nl')の組になります。
また、ヘッダが 'Jack Jansen <jack@cwi.nl>' を含むとき、同じ結果になります。
- getaddrlist (name)
-
これはgetaddr(list)に似ています。しかし、 これは
emailアドレスのリストを含むヘッダ(たとえば To ヘッダ) を解析します。
(ヘッダに1つのアドレスが在るだけのときでも)
(full name, email address) のペアのリストを返します。
nameに一致するヘッダがないとき空のリストが返されます。
この関数の現在のバージョンは正常に動作しないことがあります。
正式な名前にカンマが含まれるとでたらめの結果になります。
- getdate (name)
-
getheader()を使ってヘッダを回復し、それを解析して9つのタプルにします。
そのタプルは time.mktime()の結果と互換性があります。
nameに一致するヘッダがないとき、Noneが返され、解析できません。
日付の解析はmailer全てではないが標準になっていて魔法のようです。
テストされ多くのemailの実績によって正しく修正されてきているが、
この関数が時々正しくない結果を返しているようです。
- getdate_tz (name)
-
getheader ()を使用してヘッダを回復し、それを解析して10個のタプルにします。
最初の9つの要素はtime.mktime()の結果と互換性があります。
10番目はUTCから日付の時間帯のオフセットを与える数字です。
getdate()と同じように、nameに一致するヘッダがないときはNoneが返され、字句解析できません。
メッセージインスタンスは読み込みだけのマッピングインタフェースに対応します。
特に、m[name]が m.getheader(name)のようであり、
しかし、一致するヘッダがないので KeyErrorになっている。
len(m), m.has_key(name), m.keys(),
m.values() and m.items()
は期待したとおり動作する。(そして矛盾しない)
最後に、メッセージのインスタンスには2つの共通インスタンス変数があります。
- headers
-
ヘッダ行の完全なものを含むリストで読み込まれた順になっています。
それぞれの行は余分に付いている改行を含んでいる。
ヘッダの終わりを示す空行はリストに含まれません。
- fp
-
インスタンスが出来たとき渡されるファイルオブジェクトです。
guido@python.org