如何在通过GET请求发送之前使用JavaScript获取Gmail附件

时间:2016-04-22 07:17:22

标签: javascript ajax google-chrome-extension email-attachments gmail-api

目前我正在开发Chrome扩展程序我想要特定的电子邮件(即message_id = 1543c2a6347d984c)附件数据。我收到了电子邮件message_id也获得了附件文件名(即abc.zip)但是如何获取该附件并使用Ajax发送回我的服务器。

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="xyz@gmail.com"
    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 Uncaught TypeError:无法读取属性&#39; parts&#39; undefined(函数getAttachments第2行)

1 个答案:

答案 0 :(得分:2)

您的message_id是一个字符串,然后您调用getAttachments方法并将其作为第二个参数传递,在getAttachments中,您调用message.payload.parts,这意味着您想获取一个属性{{ 1}}来自字符串,当然是payload

Users.messages.getUsers.messages.attachments.get处获取战利品,您需要先获取消息,然后从中获取附件。

undefined