<code>Mailbox Classes</code>

# `Mailbox Classes`

## `class TMail::MhMailbox`

MH 形式のメールボックスを隠蔽するクラス。

### クラスメソッド

`new(dirname)` → `TMail::MhMailbox`

  dirname: String

  `MhMailbox` オブジェクトを生成します。 `dirname` は MH メールボックスとして使うディレクトリ名です。 すでに作成ずみでなければいけません。

### インスタンスメソッド

`each_port {|port| .... }`
`each {|port| .... }`

  port: TMail::FilePort

  メールボックスのメールに対して古いメールから順番に繰り返します。

`reverse_each_port {|port| .... }`
`reverse_each {|port| .... }`

  port: TMail::FilePort

  ディレクトリ中のメールに対して新しいメールから順番に繰り返します。

`last_atime` → `Time`
`last_atime=(time)`

  time: Time

  最後に `each_new_port/each_port/reverse_each_port` を呼び出した時間。

`each_new_port(time = last_atime()) {|port| .... }`

  time: Time
  port: TMail::FilePort

  新着メールのみに対してくりかえします。 引数 `time` が与えられたときはその時刻以降に更新されたメールを新着とみなします。 与えられなかった時は前回の `each_mail, reverse_each_mail, each_new_port` の後に 更新されたメールを新着とみなします。

`new_port` → `TMail::FilePort`

  新しいメールに対応するファイルを作成し、 対応する `TMail::Port` オブジェクトを返す。

`close`

  なにもしません。

## `class TMail::UNIXMbox`

`UNIX mbox` を扱うクラス。現在の実装では、生成時に MH 形式に変換し、 明示的な `close` 呼び出しか GC のタイミングでファイルに書き戻します。

### クラスメソッド

`new(filename)` → `TMail::UNIXMbox`

  filename: String

  新しい `TMail::UNIXMbox` オブジェクトを生成します。 `filename` は `UNIX mbox` ファイル名です。

### インスタンスメソッド

`each_port {|port| .... }`
`each {|port| .... }`

  port: TMail::FilePort

  メールボックスのメールに対して古いメールから順番に繰り返します。

`reverse_each_port {|port| ... }`
`reverse_each {|port| ... }`

  port: TMail::FilePort

  ディレクトリ中のメールに対して新しいメールから順番に繰り返します。

`each_new_port(time = @last_loaded_time) {|port| .... }`

  time: Time
  port: TMail::FilePort

  新着メールのみに対してくりかえします。 引数 `time` が与えられたときはその時刻以降に更新されたメールを新着とみなします。 与えられなかった時は前回の `each_mail, reverse_each_mail, each_new_port` の後に 更新されたメールを新着とみなします。

`new_port` → `TMail::FilePort`

  新しいメールに対応するファイルを作成し、 対応する `TMail::Port` オブジェクトを返す。

`close`

  明示的にメールボックスを書き戻します。以後、このオブジェクトに 対してメール操作メソッドを呼び出すと全て例外になります。

## `class TMail::Maildir`

`qmail` が使用するメールボックス `maildir` を隠蔽するクラス。

### クラスメソッド

`new(dirname)` → `TMail::Maildir`

  dirname: String

  新しい `TMail::Maildir` オブジェクトを生成します。 `dirname` は `maildir` メールボックスとして使うディレクトリ名です。 ディレクトリはすでに作成ずみでなければいけません。

### インスタンスメソッド

`each_port {|port| .... }`
`each {|port| .... }`

  port: TMail::FilePort

  メールボックスのメールに対して古いメールから順番に繰り返します。

`reverse_each_port {|port| .... }`
`reverse_each {|port| .... }`

  port: TMail::FilePort

  ディレクトリ中のメールに対して新しいメールから順番に繰り返します。

`each_new_port {|port| .... }`

  port: TMail::FilePort

  `MAILDIR/new` のメールに対して、`cur` に移動したのちに繰り返します。

`new_port` → `TMail::FilePort`

  新しいメールに対応するファイルを作成し、 対応する `Port` オブジェクトを返す。