(PHP 4, PHP 5, PHP 7)
imap_open — メールボックスへの IMAP ストリームをオープンする
$mailbox
, string $username
, string $password
[, int $options = 0
[, int $n_retries = 0
[, array $params = NULL
]]] ) : resource
mailbox への IMAP ストリームをオープンします。
この関数は、POP3 や NNTP サーバーへのストリームをオープンする際にも使用可能です。 しかし、いくつかの関数および機能は IMAP サーバーでしか利用できません。
mailboxメールボックス名(mailbox)は、サーバー名の部分と使用するサーバーにおける メールボックスへのパスから構成されます。特別な名前 INBOX は、 カレントユーザーの個人メールボックスを意味します。 ASCII 空間で出力可能な文字以外の外国文字を含むメールボックス名は imap_utf7_encode() でエンコードする必要があります。
サーバー部は '{' および '}' で括られ、サーバー名または IP アドレス、オプションの ':' から始まるポート指定子、('/' で始まる)オプションのプロトコル指定子 から構成されます。
サーバー部は、全ての mailbox パラメータで必須です。
{ で始まる名前はすべてリモート名で、 "{" remote_system_name [":" port] [flags] "}" [mailbox_name] のような形式となります。
| フラグ | 説明 |
|---|---|
| /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 ではエラーとなります)。 |
usernameユーザー名。
password
username のパスワード。
options
options はビットマスクであり、以下の組み合わせとなります。
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 - セキュアでない認証を行いません。
n_retries接続試行の最大数。
params接続パラメータ。次の (文字列の) キーを使って接続パラメータを設定することができます。
成功した場合は IMAP ストリームを、失敗した場合は FALSE を返します。
| バージョン | 説明 |
|---|---|
| 5.3.2 | params が追加されました。 |
| 5.2.0 | n_retries が追加されました。 |
例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);
?>