2

我正在使用Zend 框架从 Gmail 中获取电子邮件,目前我只能在收件箱中获取邮件,身份验证后我 setToken 和其他参数

 $imap->requestAndResponse('AUTHENTICATE', $authenticateParams);

 $response = $imap->requestAndResponse('XLIST', $imap->escapeString('', '*'));

在 $responce 变量中,我得到了所有标签/文件夹的列表

 Array
(
    [0] => Array
        (
            [0] => XLIST
            [1] => Array
                (
                    [0] => \HasNoChildren
                )

            [2] => /
            [3] => Calendar
        ).................... INBOX, Sent Mails Etc

依此类推,在执行一些代码并在索引 [3] 上获取名称之后,这些名称是我的标签和文件夹。

我在数组中有列表,如下所示。

    Array
(
    [0] => Calendar
    [1] => Drafts
    [2] => Facebook Mails
    [3] => Inbox
    [4] => Junk E-mail
    [5] => Logs
    [6] => Personal Mails
    [7] => Sent Items
    [8] => Office Mails
)

现在我想在每条消息/文件夹中获取电子邮件

我试过Zend_Mail_Storage_Folder_Maildir了,但我不知道如何在上述每个文件夹中获取消息,我正在使用 Imap,

通过像下面这样打开存储

$storage = new Zend_Mail_Storage_Imap($imap);

这仅返回收件箱文件夹中的邮件。

4

1 回答 1

2

显示所有文件夹

    $storage = new Zend_Mail_Storage_Imap($this->imap);
    $folders = new RecursiveIteratorIterator($storage->getFolders(), RecursiveIteratorIterator::SELF_FIRST);
    echo '<select name="folder">';
    foreach ($folders as $localName => $folder) {
        $localName = str_pad('', $folders->getDepth(), '-', STR_PAD_LEFT) .
                $localName;
        echo '<option';
        if (!$folder->isSelectable()) {
            echo ' disabled="disabled"';
        }
        echo ' value="' . htmlspecialchars($folder) . '">'
        . htmlspecialchars($localName) . '</option>';
    }
    echo '</select>';

选择文件夹

$storage->selectFolder("[Gmail]/Sent Mail");

[Gmail]/选择已发送邮件文件夹的已发送邮件标签

于 2013-03-09T05:42:50.403 回答