<?php

// 实例一个配置
$config = (new \Lib\Imap\ImapConfig())
    // 邮箱
    ->setEmail('zhlong0616@163.com')
    // 密码
    ->setPassword(base64_decode('VEVKSVdPTUJQS09TSFJHSg=='))
    // 必须是 协议+域名+端口
    ->setHost('ssl://imap.163.com:993');

// 获取一个imap连接 必须传入 \Lib\Imap\ImapConfig类
// 返回的是 Lib\Imap\Imap 类
$imap = \Lib\Imap\ImapPool::get($config);

// 登录 必须先登录
$login = $imap->login();
if($login->isOk()){// 登录成功


    /******************** start 文件夹 ************************/
    // 获取文件夹对象
    $folders = $imap->getFolders();

    // 获取 所有目录
    foreach ($folders->all() as $folder){
        $folder->getParseFolder(); // 获取解析过后的目录名称
        $folder->folder; // 获取没有解析的目录名称
    }
    // 获取顶级目录
    foreach ($folders->getTopFolder() as $folder){
        $childs = $folder->getChild(); // 获取 子级目录
        foreach ($childs as $child){
            $child->getChild();
        }
    }

    // 创建一级文件夹
    $imap->folder('你好',false)->create();
    // 创建 二级文件夹
    $imap->folder('你好/大家好',false)->create();
    // 删除 你好 文件夹
    $imap->folder('你好',false)->delete();
    // 把 你好 改成 我好
    $imap->folder('你好',false)->rename('我好',false);

    /******************** end 文件夹 ************************/



    /************************ start 获取某个文件夹下面的邮件 *******************************/
    //                选择文件夹           预备读取  使用分页   查询
    $msgs = $imap->folder('INBOX')->msg()->forPage()->get();
    // 1.使用foreach
    foreach ($msgs as $msg){
        /** @var \Lib\Imap\Parse\MessageItem $msg **/
    }
    // 2.使用 each
    $msgs->each(function (\Lib\Imap\Parse\MessageItem $msg){
        $msg->msgno;// 邮件编号
        $msg->uid;// 邮件唯一id
        $msg->size;// 邮件大小
        $msg->date;// 邮件内部时间,也就是服务器收到邮件的时间
        $msg->flags;// 邮件标签 已读,已回,星标,删除,草稿 最近
        $msg->isAnswered();//已回
        $msg->isDeleted();//删除
        $msg->isDraft();//草稿
        $msg->isFlagged();//星标
        $msg->isRecent();//最近
        $msg->isSeen();// 已读
        /** 头部信息 @see \Lib\Imap\Parse\Header */
        $msg->header->getSubject();// 已解析的主题
        $msg->header->getFrom();// 已解析的发件人
        $msg->header->getTo();// 已解析的收件人
        // 获取某个字段
        $msg->header->get('subject');

        // html内容
        $msg->body->getHtml();
        // 纯文本内容
        $msg->body->getText();
        // 获取附件
        foreach ($msg->body->getAttachment() as $attachment){
            // 存起来
            file_put_contents($attachment->get('filename'),$attachment->get('body'));
        }

    });


    // 搜索邮箱
    $msg = $imap->folder('INBOX')->msg()->search(
        // 搜索未读 并且 主题有 你好 的
        (new \Lib\Imap\ImapSearch())
            ->seen(false)
            ->subject('你好')
    )->get();

    /*******************************************************/




}else{
    // 登录失败 获取错误消息 $login->getMessage()
    throw new Exception($login->getMessage());
}