メールボックスへの IMAP ストリームをオープンする

# imap_open

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

imap_open — メールボックスへの IMAP ストリームをオープンする

### 説明

function imap_open(
string `$mailbox`,
string `$user`,
string `$password`,
int `$flags` = 0,
int `$retries` = 0,
array `$options` = []
): IMAP\Connection|false

`mailbox` への IMAP ストリームをオープンします。

この関数は、POP3 や NNTP サーバーへのストリームをオープンする際にも使用可能です。 しかし、いくつかの関数および機能は IMAP サーバーでしか利用できません。

### パラメータ

`mailbox`

  メールボックス名(mailbox)は、サーバー名の部分と使用するサーバーにおける メールボックスへのパスから構成されます。特別な名前 `INBOX` は、 カレントユーザーの個人メールボックスを意味します。 ASCII 空間で出力可能な文字以外の外国文字を含むメールボックス名は imap_utf7_encode() でエンコードする必要があります。

  警告

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

  サーバー部は '{' および '}' で括られ、サーバー名または IP アドレス、オプションの ':' から始まるポート指定子、('/' で始まる)オプションのプロトコル指定子 から構成されます。

  サーバー部は、全ての mailbox パラメータで必須です。

  `{` で始まる名前はすべてリモート名で、 `"{" remote_system_name [":" port] [flags] "}" [mailbox_name]` のような形式となります。

  - `remote_system_name` - Internet ドメイン名 あるいは括弧でかこまれたサーバーの IP アドレス。
  - `port` - オプションの TCP ポート番号。デフォルトは そのサービスのデフォルトポート。
  - `flags` - オプションのフラグ。以下の表を参照ください。
  - `mailbox_name` - リモートメールボックス名。デフォルトは INBOX 。

  オプションのフラグ名
  フラグ | 説明
  --- | ---
  `/service=`service | メールボックスにアクセスするサービス。デフォルトは "imap" 。
  `/user=`user | サーバーへのログイン時のユーザー名。
  `/authuser=`user | リモートの認証ユーザー。指定されていた場合は、このユーザーのパスワードが 認証に使用されます（例: administrator）。
  `/anonymous` | 匿名ユーザーとしてアクセスします。
  `/debug` | プロトコルの通信内容をアプリケーションのデバッグログに記録します。
  `/secure` | ネットワーク越しにプレーンテキストのパスワードを送信しません。
  `/imap`, `/imap2`, `/imap2bis`, `/imap4`, `/imap4rev1` | `/service=imap` と同じです。
  `/pop3` | `/service=pop3` と同じです。
  `/nntp` | `/service=nntp` と同じです。
  `/norsh` | 事前に認証済みの IMAP セッションを確立する際に、rsh や ssh を使用しません。
  `/ssl` | セッションの暗号化に `Secure Socket Layer` を使用します。
  `/validate-cert` | TLS/SSL サーバーの証明書を検証します（デフォルトの挙動です）。
  `/novalidate-cert` | TLS/SSL サーバーの証明書を検証しません。サーバーが自己証明の 証明書を使用している際に必要となります。
  `/tls` | セッションの暗号化に `start-TLS` の使用を強制し、それを サポートしていないサーバーとの接続を拒否します。
  `/notls` | たとえサーバーがそれをサポートしていたとしても、 セッションで `start-TLS` による暗号化を使用しません。
  `/readonly` | 読み込み専用でのメールボックスのオープンを要求します（IMAP のみ。 NNTP では無視され、SMTP および POP3 ではエラーとなります）。

`user`

  ユーザー名。

`password`

  `user` のパスワード。

`flags`

  `flags` はビットマスクであり、以下の組み合わせとなります。

  - `OP_READONLY` - メールボックスを読み込み専用でオープンします。
  - `OP_ANONYMOUS` - news に関して .newsrc を使用せず、更新もしません（NNTP のみ）。
  - `OP_HALFOPEN` - IMAP 及び NNTP 名について、 接続をオープンしますがメールボックスはオープンしません。
  - `CL_EXPUNGE` - メールボックスを閉じる際に、 自動的にメールボックスを削除します（imap_delete() および imap_expunge() も参照ください）。
  - `OP_DEBUG` - プロトコルネゴシエーションをデバッグします。
  - `OP_SHORTCACHE` - 短い（`elt`-only）キャッシングを行います。
  - `OP_SILENT` - イベントを受信しません（内部で使用します）。
  - `OP_PROTOTYPE` - ドライバのプロトタイプを返します。
  - `OP_SECURE` - セキュアでない認証を行いません。
`retries`

  接続試行の最大数。

`options`

  接続パラメータ。次の (文字列の) キーを使って接続パラメータを設定することができます。

  - `DISABLE_AUTHENTICATOR` - 認証プロパティを無効にする

### 戻り値

成功した場合は、 IMAP\Connection クラスのインスタンスを返します。 失敗した場合に `false` を返します.

### 変更履歴

バージョン | 説明
--- | ---
8.1.0 | IMAP\Connection のインスタンスを返すようになりました。 これより前のバージョンでは、 resource を返していました。

### 例

例1 imap_open() のさまざまな使用例

    <?php
    // ローカルマシンのポート 143 で稼動している IMAP サーバーに接続するには
    // 以下のようにします。
    $mbox = imap_open("{localhost:143}INBOX", "user_id", "password");

    // ローカルマシンのポート 110 で稼動している POP3 サーバーに接続するには、
    $mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");

    // SSL IMAP あるいは POP3 サーバーに接続するには、プロトコル指定のあとに
    // /ssl を追加します。
    $mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");

    // 自分でサインした証明書で SSL IMAP あるいは POP3 サーバーに接続するには、
    // プロトコル指定のあとに /ssl/novalidate-cert を追加します。
    $mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");

    // ローカルマシンのポート 119 で稼動している NNTP サーバーに接続するには、
    $nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
    // リモートサーバーに接続する際は、"localhost" を接続したいサーバーの
    // 名前または IP アドレスに置き換えます。
    ?>

例2 imap_open() の例

    <?php
    $mbox = imap_open("{imap.example.org:143}", "username", "password");

    echo "<h1>Mailboxes</h1>\n";
    $folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");

    if ($folders == false) {
        echo "コールが失敗しました<br />\n";
    } else {
        foreach ($folders as $val) {
            echo $val . "<br />\n";
        }
    }

    echo "<h1>INBOX のヘッダ</h1>\n";
    $headers = imap_headers($mbox);

    if ($headers == false) {
        echo "コールが失敗しました<br />\n";
    } else {
        foreach ($headers as $val) {
            echo $val . "<br />\n";
        }
    }

    imap_close($mbox);
    ?>

### 参考

- imap_close() - IMAP ストリームをクローズする

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