imap_list()
(PHP 4, PHP 5, PHP 7)
Read the list of mailboxes
说明
imap_list(resource $imap_stream,string $ref,string $pattern): array
Read the list of mailboxes.
参数
- $imap_stream
由imap_open()返回的 IMAP 流。
- $ref
$refshould normally be just the server specification as described in imap_open().
Warning
Passing untrusted data to this parameter isinsecure, unlessimap.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.
范例
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); ?>
参见
imap_getmailboxes()
Read the list of mailboxes, returning detailed information on each oneimap_lsub()
List all the subscribed mailboxes
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); ?>
use echo mb_convert_encoding($val, "utf-8", "UTF7-IMAP"); for cyrrilic folder names
if there is an error imap_list returns FALSE not an empty array (as expected by docs)
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.
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)