2

Zend フレームワークを使用して Gmail から電子メール メッセージを取得しています。現在、INBOX でのみメッセージを取得できます。認証後、トークンとその他のパラメータを設定します

 $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 に答える