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?
我正在尝试获取 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?