0

目前我正在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号线)

回答

2

你MESSAGE_ID是字符串,然后你调用getAttachments方法并将其作为第二个参数传递,在getAttachments中,你调用message.payload.parts,这意味着你想得到一个属性​​,当然是undefined

拿着赃物Users.messages.getUsers.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); 
    }); 
}); 
+0

究竟什么是该解决方案?拉特的看到这[链接](https://developers.google.com/gmail/api/v1/reference/users/messages/attachments/get#examples) –

+1

@DivyeshKanzariya,看到我的答案。 –

+0

如何申请许可https://mail.google.com/ https://www.googleapis.com/auth/gmail.modify https://www.googleapis.com/auth/gmail.readonly该豪宅 –