メールボックスのリストを読み込み、各ボックスに関する詳細な情報を返す

# imap_getmailboxes

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_getmailboxes — メールボックスのリストを読み込み、各ボックスに関する詳細な情報を返す

### 説明

function imap_getmailboxes(IMAP\Connection `$imap`, string `$reference`, string `$pattern`): array|false

メールボックスの情報を取得します。

### パラメータ

`imap`
  IMAP\Connection クラスのインスタンス。
`reference`

  通常、`reference` は imap_open() で述べられているサーバー定義です。

  警告

  信頼できないデータをこのパラメータに渡すのであれば、 imap.enable_insecure_rsh を無効にしておかなければ危険です。

`pattern`
  検索を開始するメールボックスの階層を指定します。 `pattern` の中で使用できる特別な文字として '`*`' および '`%`' があります。 '`*`' は、すべてのメールボックスを意味します。 `pattern` に '`*`' を指定すると、 メールボックス階層全体のリストが得られます。 '`%`' は現在のレベルのみを意味します。 '`%`' を `pattern` に指定すると、 トップレベルのメールボックスのみを返します。`UW_IMAPD` の場合、 '`~/mail/%`' は ~/mail ディレクトリ内のすべてのメールボックスを返しますが、 そのディレクトリのサブフォルダにあるメールボックスは返しません。

### 戻り値

メールボックス情報を有するオブジェクトの配列を返します。各オブジェクトには、 メールボックスの完全な名前である `name`、 このメールボックスの階層の区切りを示す属性 `delimiter`、 そして `attributes` が存在します。 `attributes` はビットマスクであり、 次のものについて調べることができます。

- `LATT_NOINFERIORS` - このメールボックスには 「子供」がいないか、またはいないかもしれません（このボックスの中にメールボックスはありません）。 このメールボックスに対して imap_createmailbox() をコールしても動作しません。

- `LATT_NOSELECT` - 単なるコンテナであり、 メールボックスではありません - これをオープンすることはできません。

- `LATT_MARKED` - このメールボックスにはマークがつけられています。 これは、最後に確認したとき以降に新たなメッセージが到着しているかもしれないということを意味します。 すべての IMAP サーバーがこの機能を提供しているとは限りません。

- `LATT_UNMARKED` - このメールボックスにはマークがつけられておらず、 新たなメッセージを含んでいません。 `MARKED` あるいは `UNMARKED` が提供されている場合は、 その IMAP サーバーがこのメールボックスに対してマーク機能を提供しているとみなせます。

- `LATT_REFERRAL` - このコンテナはリモートメールボックスと関連を持ちます。

- `LATT_HASCHILDREN` - このメールボックスは選択可能な子を持ちます。

- `LATT_HASNOCHILDREN` - このメールボックスは選択可能な子を持ちません。

この関数は、失敗した時に `false` を返します。

### 変更履歴

バージョン | 説明
--- | ---
8.1.0 | 引数 `imap` は、IMAP\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な `imap` resource が期待されていました。

### 例

例1 imap_getmailboxes() の例

    <?php
    $mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
          or die("接続できません: " . imap_last_error());

    $list = imap_getmailboxes($mbox, "{imap.example.org}", "*");
    if (is_array($list)) {
        foreach ($list as $key => $val) {
            echo "($key) ";
            echo imap_utf7_decode($val->name) . ",";
            echo "'" . $val->delimiter . "',";
            echo $val->attributes . "<br />\n";
        }
    } else {
        echo "imap_getmailboxes failed: " . imap_last_error() . "\n";
    }

    imap_close($mbox);
    ?>

### 参考

- imap_getsubscribed() - 購読中の全メールボックスの一覧を取得する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open