我正在尝试抓取Gmail文件夹列表(labels actually)
。
我正在使用节点js和这个模块:https://github.com/mscdex/node-imap
我想获取所有文件夹和子文件夹。 作者留下的文件并不那么明亮。
对此有何想法?
答案 0 :(得分:2)
连接到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中使用多个连接