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

时间:2015-05-12 11:03:45

标签: node.js imap

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

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

对此有何想法?

1 个答案:

答案 0 :(得分:2)

努力工作后我终于找到了答案, 这就是我如何获得文件夹,不仅仅是谷歌,甚至每个使用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?