⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imap.php

📁 Bug tracker, and reporter.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot set deleted flag');        }        // TODO: expunge here or at close? we can handle an error here better and are more fail safe        if (!$this->_protocol->expunge()) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('message marked as deleted, but could not expunge');        }    }    /**     * get unique id for one or all messages     *     * if storage does not support unique ids it's the same as the message number     *     * @param int|null $id message number     * @return array|string message number for given message or all messages as array     * @throws Zend_Mail_Storage_Exception     */    public function getUniqueId($id = null)    {        if ($id) {            return $this->_protocol->fetch('UID', $id);        }        return $this->_protocol->fetch('UID', 1, INF);    }    /**     * get a message number from a unique id     *     * I.e. if you have a webmailer that supports deleting messages you should use unique ids     * as parameter and use this method to translate it to message number right before calling removeMessage()     *     * @param string $id unique id     * @return int message number     * @throws Zend_Mail_Storage_Exception     */    public function getNumberByUniqueId($id)    {        // TODO: use search to find number directly        $ids = $this->getUniqueId();        foreach ($ids as $k => $v) {            if ($v == $id) {                return $k;            }        }        /**         * @see Zend_Mail_Storage_Exception         */        require_once 'Zend/Mail/Storage/Exception.php';        throw new Zend_Mail_Storage_Exception('unique id not found');    }    /**     * get root folder or given folder     *     * @param  string $rootFolder get folder structure for given folder, else root     * @return Zend_Mail_Storage_Folder root or wanted folder     * @throws Zend_Mail_Storage_Exception     * @throws Zend_Mail_Protocol_Exception     */    public function getFolders($rootFolder = null)    {        $folders = $this->_protocol->listMailbox((string)$rootFolder);        if (!$folders) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('folder not found');        }        ksort($folders, SORT_STRING);        $root = new Zend_Mail_Storage_Folder('/', '/', false);        $stack = array(null);        $folderStack = array(null);        $parentFolder = $root;        $parent = '';        foreach ($folders as $globalName => $data) {            do {                if (!$parent || strpos($globalName, $parent) === 0) {                    $pos = strrpos($globalName, $data['delim']);                    if ($pos === false) {                        $localName = $globalName;                    } else {                        $localName = substr($globalName, $pos + 1);                    }                    $selectable = !$data['flags'] || !in_array('\\Noselect', $data['flags']);                    array_push($stack, $parent);                    $parent = $globalName . $data['delim'];                    $folder = new Zend_Mail_Storage_Folder($localName, $globalName, $selectable);                    $parentFolder->$localName = $folder;                    array_push($folderStack, $parentFolder);                    $parentFolder = $folder;                    break;                } else if ($stack) {                    $parent = array_pop($stack);                    $parentFolder = array_pop($folderStack);                }            } while ($stack);            if (!$stack) {                /**                 * @see Zend_Mail_Storage_Exception                 */                require_once 'Zend/Mail/Storage/Exception.php';                throw new Zend_Mail_Storage_Exception('error while constructing folder tree');            }        }        return $root;    }    /**     * select given folder     *     * folder must be selectable!     *     * @param  Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder     * @return null     * @throws Zend_Mail_Storage_Exception     * @throws Zend_Mail_Protocol_Exception     */    public function selectFolder($globalName)    {        $this->_currentFolder = $globalName;        if (!$this->_protocol->select($this->_currentFolder)) {            $this->_currentFolder = '';            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot change folder, maybe it does not exist');        }    }    /**     * get Zend_Mail_Storage_Folder instance for current folder     *     * @return Zend_Mail_Storage_Folder instance of current folder     * @throws Zend_Mail_Storage_Exception     */    public function getCurrentFolder()    {        return $this->_currentFolder;    }    /**     * create a new folder     *     * This method also creates parent folders if necessary. Some mail storages may restrict, which folder     * may be used as parent or which chars may be used in the folder name     *     * @param  string                          $name         global name of folder, local name if $parentFolder is set     * @param  string|Zend_Mail_Storage_Folder $parentFolder parent folder for new folder, else root folder is parent     * @return null     * @throws Zend_Mail_Storage_Exception     */    public function createFolder($name, $parentFolder = null)    {        // TODO: we assume / as the hierarchy delim - need to get that from the folder class!        if ($parentFolder instanceof Zend_Mail_Storage_Folder) {            $folder = $parentFolder->getGlobalName() . '/' . $name;        } else if ($parentFolder != null) {            $folder = $parentFolder . '/' . $name;        } else {            $folder = $name;        }        if (!$this->_protocol->create($folder)) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot create folder');        }    }    /**     * remove a folder     *     * @param  string|Zend_Mail_Storage_Folder $name      name or instance of folder     * @return null     * @throws Zend_Mail_Storage_Exception     */    public function removeFolder($name)    {        if ($name instanceof Zend_Mail_Storage_Folder) {            $name = $name->getGlobalName();        }        if (!$this->_protocol->delete($name)) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot delete folder');        }    }    /**     * rename and/or move folder     *     * The new name has the same restrictions as in createFolder()     *     * @param  string|Zend_Mail_Storage_Folder $oldName name or instance of folder     * @param  string                          $newName new global name of folder     * @return null     * @throws Zend_Mail_Storage_Exception     */    public function renameFolder($oldName, $newName)    {        if ($oldName instanceof Zend_Mail_Storage_Folder) {            $oldName = $oldName->getGlobalName();        }        if (!$this->_protocol->rename($oldName, $newName)) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot rename folder');        }    }    /**     * append a new message to mail storage     *     * @param  string                                     $message message as string or instance of message class     * @param  null|string|Zend_Mail_Storage_Folder       $folder  folder for new message, else current folder is taken     * @param  null|array                                 $flags   set flags for new message, else a default set is used     * @throws Zend_Mail_Storage_Exception     */     // not yet * @param string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class    public function appendMessage($message, $folder = null, $flags = null)    {        if ($folder === null) {            $folder = $this->_currentFolder;        }        if ($flags === null) {            $flags = array(Zend_Mail_Storage::FLAG_SEEN);        }        // TODO: handle class instances for $message        if (!$this->_protocol->append($folder, $message, $flags)) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot create message, please check if the folder exists and your flags');        }    }    /**     * copy an existing message     *     * @param  int                             $id     number of message     * @param  string|Zend_Mail_Storage_Folder $folder name or instance of targer folder     * @return null     * @throws Zend_Mail_Storage_Exception     */    public function copyMessage($id, $folder)    {        if (!$this->_protocol->copy($folder, $id)) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot copy message, does the folder exist?');        }    }    /**     * set flags for message     *     * NOTE: this method can't set the recent flag.     *     * @param  int   $id    number of message     * @param  array $flags new flags for message     * @throws Zend_Mail_Storage_Exception     */    public function setFlags($id, $flags)    {        if (!$this->_protocol->store($flags, $id)) {            /**             * @see Zend_Mail_Storage_Exception             */            require_once 'Zend/Mail/Storage/Exception.php';            throw new Zend_Mail_Storage_Exception('cannot set flags, have you tried to set the recent flag or special chars?');        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -