node-imap 模块获取 gmail 列表文件夹(标签)

node-imap module fetch gmail list folders(labels)

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

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

对此有什么想法吗?

经过努力我终于找到了答案, 这就是我不仅为 google 甚至为每个使用 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?