【问题标题】:node-imap module fetch gmail list folders(labels)node-imap 模块获取 gmail 列表文件夹(标签)
【发布时间】:2015-07-23 05:06:42
【问题描述】:

我正在尝试获取 Gmail 文件夹列表(labels actually)。 我正在使用节点 js 和这个模块:https://github.com/mscdex/node-imap

我想获取所有文件夹和子文件夹。 作者留下的文档没那么亮。

对此有什么想法吗?

【问题讨论】:

  • thank's.. 注意:在 imap-simple 中创建树文件夹子项是 connection.addBox("parents.children")

标签: node.js imap


【解决方案1】:

经过努力我终于找到了答案, 这就是我不仅为谷歌甚至为每个使用 imap 标准的电子邮件系统获取文件夹的方式

连接到 imap 服务器后 通过此函数获取所有文件夹。

function getFolders(username, callback) {

var folders = [];
if (Connection[username]) {

    Connection[username].once('ready', function() {

        Connection[username].getBoxes(function (err, boxes) {


            if (err) {

                // TODO : parse some error here

            } else {

                folders = imapNestedFolders(boxes);

            }

            return callback(err, folders);
        });
    });

} else {

    return framework.httpError(500, self);
}
}

通过此函数将文件夹解析为漂亮的嵌套树 json 对象

function imapNestedFolders(folders) {

var FOLDERS = [];
var folder  = {};

for (var key in folders) {

    if (folders[key].attribs.indexOf('\\HasChildren') > -1) {

        var children = imapNestedFolders(folders[key].children);

        folder = {
            name        : key,
            children    : children
        };

    } else {

        folder = {
            name        : key,
            children    : null
        };
    }

    FOLDERS.push(folder);

}
return FOLDERS;
}

您也可以将连接变量更改为您想要的。 这些函数适用于多个连接,因为连接变量是一个数组,您可以在此处阅读有关此内容的更多信息, 我在这里写了如何在节点 imap 中使用多个连接

How can i handle multiple imap connections in node.js?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2012-10-09
    • 2013-12-22
    • 2013-04-07
    • 2010-12-26
    • 2011-06-28
    • 2018-11-02
    相关资源
    最近更新 更多