###
5 `MMDFMessage`

クラス `MMDFMessage`( | [message])

  MMDF 固有の動作をするメッセージ。引数 message は `Message` のコンストラクタと同じ意味を持ちます。

mbox メールボックスのメッセージと同様に、MMDF メッセージは送り主のアドレスと配送日時が 最初の "From " で始まる行に記録されています。同様に、メッセージの状態を示すフラグは 通常 Status: および X-Status: ヘッダに収められています。

よく使われる MMDF メッセージのフラグは mbox メッセージのものと同一で以下の通りです:

フラグ | 意味 | 説明
--- | --- | ---
R | 既読(Read) | 読んだ
O | 古い(Old) | 以前に MUA に発見された
D | 削除(Deleted) | 削除予定
F | フラグ付き(Flagged) | 重要だとマークされた
A | 返答済み(Answered) | 返答した

"R" および "O" フラグは Status: ヘッダに記録され、 "D"、"F"、"A" フラグは X-Status: ヘッダに記録されます。 フラグとヘッダは通常記述された順番に出現します。

`MMDFMessage` インスタンスは `mboxMessage` インスタンスと同一の 以下のメソッドを提供します:

`get_from`( | )

  MMDF メールボックスのメッセージの開始を示す "From " 行を表わす文字列を返します。 先頭の "From " および末尾の改行は含まれません。

`set_from`( | from_[, time_=None])

  "From " 行を from_ にセットします。from_ は先頭の "From " や 末尾の改行を含まない形で指定しなければなりません。利便性のために、time_ を指定して適切に整形して from_ に追加させることができます。time_ を指定する場合、それは `struct_time` インスタンス、`time.strftime()` に渡すのに適したタプル、または `True` (この場合 `time.gmtime()` を使います)のいずれかでなければなりません。

`get_flags`( | )

  現在セットされているフラグを特定する文字列を返します。メッセージが規定された形式に 準拠しているならば、結果は次の順に並べられたゼロまたは1回の "`R`"、 "`O`"、"`D`"、"`F`"、"`A`" です。

`set_flags`( | flags)

  flags で指定されたフラグをセットして、他のフラグは下ろします。 flags は並べられたゼロまたは1回の "`R`"、 "`O`"、"`D`"、"`F`"、"`A`" です。

`add_flag`( | flag)

  flags で指定されたフラグをセットしますが他のフラグは変えません。 一度に二つ以上のフラグをセットすることは、flag に2文字以上の文字列を 指定すればできます。

`remove_flag`( | flag)

  flags で指定されたフラグを下ろしますが他のフラグは変えません。 一度に二つ以上のフラグを取り除くことは、flag に2文字以上の文字列を 指定すればできます。

`MMDFMessage` インスタンスが `MaildirMessage` インスタンスに 基づいて生成されるとき、`MaildirMessage` インスタンスの配送日時に基づいて "From " 行が作り出され、次の変換が行われます:

結果の状態 | `MaildirMessage` の状態
--- | ---
R フラグ | S フラグ
O フラグ | "cur" サブディレクトリ
D フラグ | T フラグ
F フラグ | F フラグ
A フラグ | R フラグ

`MMDFMessage` インスタンスが `MHMessage` インスタンスに 基づいて生成されるとき、以下の変換が行われます。

結果の状態 | `MHMessage` 状態
--- | ---
R フラグ および O フラグ | "unseen" シーケンス無し
O フラグ | "unseen" シーケンス
F フラグ | "flagged" シーケンス
A フラグ | "replied" シーケンス

`MMDFMessage` インスタンスが `BabylMessage` インスタンスに 基づいて生成されるとき、以下の変換が行われます:

結果の状態 | `BabylMessage` の状態
--- | ---
R フラグ および O フラグ | "unseen" ラベル無し
O フラグ | "unseen" ラベル
D フラグ | "deleted" ラベル
A フラグ | "answered" ラベル

`MMDFMessage` インスタンスが `mboxMessage` インスタンスに 基づいて生成されるとき、"From " 行はコピーされ全てのフラグは直接対応します:

結果の状態 | `mboxMessage` の状態
--- | ---
R フラグ | R フラグ
O フラグ | O フラグ
D フラグ | D フラグ
F フラグ | F フラグ
A フラグ | A フラグ