获取Gmail所有文件夹IMAP PHP

时间:2014-08-27 15:10:13

标签: php imap

我想通过imap访问gmail中的All文件夹。用不同的语言和不同的名字。 我该怎么办?

连接代码是:

$mail= imap_open('{imap.gmail.com:993/imap/ssl} //The all folder should be here ',$user,$pass);

4 个答案:

答案 0 :(得分:2)

如[{3}}所述,Gmail支持here。这意味着"所有"的LIST响应文件夹将包含\All属性,与使用的语言无关:

* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail"

不幸的是,似乎PHP IMAP库只返回有限数量的邮箱属性,\All不是其中之一,所以只有在库更新后这才是可行的解决方案。

答案 1 :(得分:2)

这是我找到问题的解决方案。想法是All文件夹包含最多的邮件,所以我们必须获取所有文件夹中的邮件数量,然后找到最大的数字,即所有文件夹

  

当垃圾箱中的邮件数量大于所有文件夹时,此解决方案存在问题。

    $mbox=imap_open("{imap.gmail.com:993/imap/ssl}", "user", "pass");
    $list = imap_getmailboxes($mbox, "{imap.gmail.com:993/imap/ssl}", "*");
    $mailbox=null;
    $mailbox_name='';
    $number=0;
    foreach ($list as $key ) {
        $con=imap_open("$key->name", "user", "pass");
        $number_msg=imap_num_msg($con);

            if($number_msg > $number)
            {
                $number = $number_msg;
                $mailbox= $con;
                $mailbox_name= $key->name;
            }

    }

答案 2 :(得分:0)

尝试

$folders = imap_listmailbox($mbox, "{imap.gmail.com:993/imap/ssl}", "ALL");

答案 3 :(得分:0)

如果您使用的是 PhpImap 库,您可以通过以下方式访问“所有邮件”文件夹:

$mailbox = new PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}[Gmail]/All Mail', $user, $pass, $attachment_dir);