imap_list

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

imap_listRead the list of mailboxes

说明

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

Read the list of mailboxes.

参数

imap

An IMAP\Connection instance.

reference

reference should normally be just the server specification as described in imap_open().

Warning

Passing untrusted data to this parameter is insecure, unless imap.enable_insecure_rsh is disabled.

pattern

指定在邮箱层级的何处开始查找。

在组成 pattern 的字符中可使用两个特殊字符: '*' 和 '%'。 '*' 是指返回所有邮箱目录. 如果将 '*' 作为 pattern 参数时, 则会返回整个邮箱层级结构。 '%' 是指只返回当前级次。 '%' 作为 pattern 参数则只会返回顶层邮箱; '~/mail/%' 用于 UW_IMAPD 则会返回名为 ~/mail 的目录, 但不包含其子目录。

返回值

Returns an array containing the names of the mailboxes or false in case of failure.

更新日志

版本 说明
8.1.0 The imap parameter expects an IMAP\Connection instance now; previously, a 资源(resource) was expected.

范例

Example #1 imap_list() example

<?php
$mbox 
imap_open("{imap.example.org}""username""password"OP_HALFOPEN)
      or die(
"can't connect: " 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 failed: " imap_last_error() . "\n";
}

imap_close($mbox);
?>

参见

User Contributed Notes

maxime dot marais+php at gmail dot com 04-Apr-2019 11:51
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)
Anonymous 19-Mar-2019 09:56
use
echo mb_convert_encoding($val, "utf-8", "UTF7-IMAP");
for cyrrilic folder names
jemore at free dot fr 29-Mar-2014 02:02
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);
?>
c6h1206free at gmail dot com 16-Sep-2008 12:00
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.
kevin at metalaxe dot com 05-Jun-2007 02:13
if there is an error imap_list returns FALSE not an empty array (as expected by docs)
PHP8中文手册 站长在线 整理 版权归PHP文档组所有