如何使用JavaScript通过GET请求之前发送
问题描述:
目前我正在Chrome扩展我想特别是电子邮件(即MESSAGE_ID = 1543c2a6347d984c)附件数据获取Gmail附件。我得到了email message_id也获得了附件文件名(即abc.zip),但是如何获得该附件并使用Ajax发送回我的服务器。如何使用JavaScript通过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) {
callback(part.filename, part.mimeType, attachment);
});
}
}
}
调用
var userId="[email protected]"
var message_id="1543c2a6347d984d";
getAttachments(userId,message_id,function callback(filename,minetype,attachment){
console.log('File Name is '+filename);
console.log('MimeType is '+minetype);
});
错误: main.js:15遗漏的类型错误:无法读取的未定义的属性 '零件'(功能getAttachments 2号线)
答
你MESSAGE_ID是字符串,然后你调用getAttachments
方法并将其作为第二个参数传递,在getAttachments
中,你调用message.payload.parts
,这意味着你想得到一个属性,当然是undefined
。
拿着赃物Users.messages.get和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) {
callback(part.filename, part.mimeType, attachment);
});
}
}
}
function getMessage(userId, messageId, callback) {
var request = gapi.client.gmail.users.messages.get({
'userId': userId,
'id': messageId
});
request.execute(function(message) {
callback(userId, message);
});
}
var userId="[email protected]"
var message_id="1543c2a6347d984d";
getMessage(userId, message_id, function(userId, message) {
getAttachments(userId, message, function(filename,minetype,attachment) {
console.log('File Name is '+filename);
console.log('MimeType is '+minetype);
});
});
究竟什么是该解决方案?拉特的看到这[链接](https://developers.google.com/gmail/api/v1/reference/users/messages/attachments/get#examples) –
@DivyeshKanzariya,看到我的答案。 –
如何申请许可https://mail.google.com/ https://www.googleapis.com/auth/gmail.modify https://www.googleapis.com/auth/gmail.readonly该豪宅 –