• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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);
    ?>
    

    参见

    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)