【发布时间】:2018-12-15 10:01:39
【问题描述】:
我正在尝试在我的本地计算机上创建一个节点应用程序来执行此操作:
1) 查看我的 gmail 收件箱。
2) 如果邮件有特定的标签和附件,请下载。
我在第 2 步。
我困惑的部分是关于“部分”的部分。
https://developers.google.com/gmail/api/v1/reference/users/messages/attachments/get
谷歌示例代码:
function getAttachments(userId, message, callback) {
var parts = message.payload.parts;
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
if (part.filename && part.filename.length > 0) {
var attachId = part.body.attachmentId;
var request = gapi.client.gmail.users.messages.attachments.get({
'id': attachId,
'messageId': message.id,
'userId': userId
});
request.execute(function(attachment) { // <--- that attachment param
callback(part.filename, part.mimeType, attachment);
});
}
}
}
“附件”似乎包含附件数据。
这是我的代码:
const gmail = google.gmail({version: 'v1', auth});
gmail.users.messages.list({
userId: 'me',
'q':'subject:my-test has:nouserlabels has:attachment'
}, (err, res) => {
if (err) return console.log('1 The API returned an error: ' + err);
const msgs = res.data.messages;
if(typeof msgs !== 'undefined'){
console.log('Messages:');
msgs.forEach( msg => {
console.log(`- ${msg.id}`);
gmail.users.messages.get({
userId: 'me',
id: msg.id,
format:'full'
},(err, res) => {
if (err) return console.log('2 The API returned an error: ' + err);
// Wheres the data????? //
console.log('A')
console.log(res.data.payload.parts)
console.log('B')
console.log(res.data.payload.parts[1])
console.log('C')
console.log(res.data.payload.parts[1].body)
})
});
} else {
console.log('no messages found')
}
});
【问题讨论】:
-
如果这真的是谷歌官方的例子,他们可能会看看“循环内部的闭包”......但是无论如何,你的问题是什么?!
-
基本上,如何使用 nodejs 从 gmail 下载附件。我已经给出了我在上面尝试过的内容。
标签: javascript node.js gmail-api