node.js Gmail API:获取内联/嵌入图像

时间:2017-03-17 18:23:14

标签: javascript node.js gmail gmail-api

抓取电子邮件时,我运行gmail.users.messages.get(),然后运行以下两个函数来处理payload

function getBody(message) {
  var encodedBody = '';  
  try{    
    if(typeof message.parts === 'undefined'){
      encodedBody = message.body.data;
    }    
    else{
      encodedBody = getHTMLPart(message.parts);
    }
    encodedBody = encodedBody.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '');
  }
  catch(e) {} // there was a failure

  return decodeURIComponent(escape(window.atob(encodedBody)));
}
function getHTMLPart(arr) {

  for(var x = 0; x <= arr.length; x++){    
    if(typeof arr[x].parts === 'undefined'){
      if(arr[x].mimeType === 'text/html'){
        return arr[x].body.data;
      }
    }
    else{      
      return getHTMLPart(arr[x].parts);
    }
  }
  return '';
}

然后我将该数据保存到.html文件中供以后使用。问题是内联图像没有嵌入base64或任何其他方式来检索该数据,而是使用唯一的CID嵌入。

所以我需要做的是,当从上面的函数中检索有效负载时,我还需要检索嵌入的图像并将其保存在本地&lt; \ CID.png&gt; (或jpg)管他呢)。然后,我可以替换消息,将html中嵌入的CID替换为图像的本地路径。

那么有谁知道如何获得这些嵌入式图像或有任何建议?提前谢谢!

1 个答案:

答案 0 :(得分:1)

图像将被提取到附件中。在响应中查找包含cidContent-ID标题中X-Attachment-Id的部分,获取附件,并将base64数据作为图像源而不是{{1}插入}。

示例

cid