PHP 8.4.0 RC4 available for testing

imap_list

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

imap_listメールボックスのリストを読み込む

説明

imap_list(IMAP\Connection $imap, string $reference, string $pattern): array|false

メールボックスのリストを読み込みます。

パラメータ

imap

IMAP\Connection クラスのインスタンス。

reference

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

警告

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

pattern

検索を開始するメールボックスの階層を指定します。

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

戻り値

メールボックスの名前を含む配列を返します。 または失敗時に false を返します。

変更履歴

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

例1 imap_list() の例

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

$list = imap_list($mbox, "{imap.example.org}", "*");
if (
is_array($list)) {
foreach (
$list as $val) {
echo
imap_utf7_decode($val) . "\n";
}
} else {
echo
"imap_list が失敗しました: " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

参考

  • imap_getmailboxes() - メールボックスのリストを読み込み、各ボックスに関する詳細な情報を返す
  • imap_lsub() - 購読しているすべてのメールボックスの一覧を得る

add a note

User Contributed Notes 5 notes

up
3
jemore at free dot fr
10 years ago
With the values returned from the imap_list function, you can search a message in the folder, but you have to use the imap_reopen function before . Continuing the previous example (from c6h1206free at gmail dot com )

<?php
$srv
= '{imap.example.com}';
$conn = imap_open($srv, 'me', 'mypass');
$boxes = imap_list($conn, $srv, '*');
foreach(
$boxes as $box)
{
imap_reopen($srv, $box);
var_dump(imap_search($srv, "ALL"));
}
imap_close($conn);
?>
up
2
Anonymous
5 years ago
use
echo mb_convert_encoding($val, "utf-8", "UTF7-IMAP");
for cyrrilic folder names
up
2
maxime dot marais+php at gmail dot com
5 years ago
Please be aware that if you are trying to list an empty mailbox, imap_list will return FALSE as if there was an error instead of an empty array() as one may expect.

Example:

With a brand new account created on your mail server, with an empty INBOX, you will get:

$list = imap_list( $imap_stream, $ref, "INBOX/*");
var_dump( $list );
// bool(false)
up
1
c6h1206free at gmail dot com
16 years ago
imap_list returns a simple array of strings that look just like the $ref parameter one needs to specify:

<?php

$srv
= '{imap.example.com}';

$conn = imap_open($srv, 'me', 'mypass');

$boxes = imap_list($conn, $srv, '*');

print_r($boxes);
imap_close($conn);
?>

Output:

<pre>
Array
(
[0] => {imap.example.com}Calendar
[1] => {imap.example.com}Contacts
[2] => {imap.example.com}Deleted Items
[3] => {imap.example.com}Drafts
[4] => {imap.example.com}Journal
[5] => {imap.example.com}Junk E-mail
[6] => {imap.example.com}Notes
[7] => {imap.example.com}Outbox
[8] => {imap.example.com}RSS Feeds
[9] => {imap.example.com}Sent Items
[10] => {imap.example.com}Tasks
)
</pre>

These directly fill in the $ref argument for every function that takes one.
up
0
kevin at metalaxe dot com
17 years ago
if there is an error imap_list returns FALSE not an empty array (as expected by docs)
To Top