<?php


namespace Heanup\App\Api\Controller\Mail;


use Heanup\App\Api\Package\Database\Mail;
use Heanup\App\Api\RestfulController;
use PhpImap\Exceptions\InvalidParameterException;
use PhpImap\Mailbox;

class Lists extends RestfulController
{

    /**
     * Get Method|获取数据
     * @return void
     * @throws InvalidParameterException
     */
    protected function getData()
    {
        $email=$this->getQuery()->string("u");
        $account = substr($email, 0, strpos($email, "@"));
        $domain = substr($email, strpos($email, "@") + 1);
        $_mail = Mail::getOne(['email' => $account, 'domain' => $domain, 'status' => 1]);
        $password = $_mail['password'];
        $mailbox = new Mailbox(
            '{mail.97admin.com:993/imap/ssl/novalidate-cert}INBOX', // IMAP server and mailbox folder
            $email, // Username for the before configured mailbox
            $password, // Password for the before configured username
            __DIR__, // Directory, where attachments will be saved (optional)
            'UTF-8' // Server encoding (optional)
        );

        $mail_ids = $mailbox->searchMailbox('ALL');
//        $mail_info = $mailbox->getMailsInfo($mail_ids);
        $mail_info=[];
        $mail_ids=array_reverse($mail_ids);
        foreach ($mail_ids as $mail_id) {
            $detail = $mailbox->getMail($mail_id);
            $temp=[
                'subject' => $detail->subject,
                'content' => $detail->textHtml,
                'from' => $detail->fromAddress,
                'fromName' => $detail->fromName,
                'replyTo' => $detail->replyTo,
                'date' => $detail->date,
                'cc' => $detail->cc,
                'bcc' => $detail->bcc,
            ];
            $mail_info[]=$temp;
        }
        $this->showSuccess($mail_info);
    }

    /**
     * Post Method|新增数据
     * @return void
     */
    protected function postData()
    {
        // TODO: 需要实现 postData() 方法.
    }

    /**
     * Put Method|更新数据
     * @return void
     */
    protected function putData()
    {
        // TODO: 需要实现 putData() 方法.
    }

    /**
     * Delete Method|删除数据
     * @return void
     */
    protected function deleteData()
    {
        // TODO: 需要实现 deleteData() 方法.
    }
}