Zend Imap,在Gmail标签中提取电子邮件

时间:2012-10-19 10:30:40

标签: php zend-framework gmail gmail-imap zend-gdata

我正在使用Zend framework从Gmail获取电子邮件,目前我只能在INBOX中收到邮件, 身份验证后我使用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);

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

1 个答案:

答案 0 :(得分: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] /已发邮件标签