Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js Gmail API:获取内嵌/嵌入图像_Javascript_Node.js_Gmail_Gmail Api - Fatal编程技术网

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

Javascript node.js Gmail API:获取内嵌/嵌入图像,javascript,node.js,gmail,gmail-api,Javascript,Node.js,Gmail,Gmail Api,抓取电子邮件时,我运行gmail.users.messages.get(),然后运行以下两个函数来处理有效负载 function getBody(message) { var encodedBody = ''; try{ if(typeof message.parts === 'undefined'){ encodedBody = message.body.data; } else{ encodedBody = getH

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

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 '';
}
函数getBody(消息){ var encodedBody=''; 试试{ if(message.parts的类型==“未定义”){ encodedBody=message.body.data; } 否则{ encodedBody=getHTMLPart(message.parts); } encodedBody=encodedBody.replace(/-/g,“+”).replace(/_/g,“/”).replace(/\s/g,”); } 第(e)条{}//有一次失败 返回decodeURIComponent(escape(window.atob(encodedBody)); } 函数getHTMLPart(arr){
对于(var x=0;x图像将被提取到附件中。在响应中查找
Content ID
x-Attachment-ID
标题中包含
cid
的部分,获取附件,并插入base64数据作为图像源,而不是
cid

示例

var响应={
“id”:“15ade50437b9aa01”,
“线程ID”:“15ade50437b9aa01”,
“labelIds”:[
“未读”,
“重要”,
“已发送”,
“收件箱”
],
“代码段”:“,
“历史ID”:“1171380”,
“内部日期”:“1489788486000”,
“有效载荷”:{
“mimeType”:“多部分/相关”,
“文件名”:“,
“标题”:[
{
“名称”:“内容类型”,
“值”:“多部分/相关;边界=94eb2c034184892a95054af46913”
}
],
“正文”:{
“大小”:0
},
“部分”:[
{
“mimeType”:“多部分/备选方案”,
“文件名”:“,
“标题”:[
{
“名称”:“内容类型”,
“值”:“多部分/备选方案;边界=94eb2c034184892a93054af46912”
}
],
“正文”:{
“大小”:0
},
“部分”:[
{
“partId”:“0.0”,
“mimeType”:“文本/普通”,
“文件名”:“,
“标题”:[
{
“名称”:“内容类型”,
“值”:“文本/纯文本;字符集=UTF-8”
}
],
“正文”:{
“尺寸”:25,
“数据”:“W2LTYWDLOIBBMZVZ2FKIGJPBGQGMV0NCG=”
}
},
{
“partId”:“0.1”,
“mimeType”:“text/html”,
“文件名”:“,
“标题”:[
{
“名称”:“内容类型”,
“值”:“text/html;charset=UTF-8”
}
],
“正文”:{
“尺寸”:106,
“数据”:“PGRpdiBkaXI9Imx0ciI-PGLTZYBZCMM9IMNPZDPAV8XNWFKZTUWMVLYTG0 MGNLIIBHBHQ9IKLUZM9NYWQGymlsZCAXIIB3AWR0AD0INTGIIGHLAWDODD0INTQIPJXICJ48L2RPDJ4NCG=”
}
}
]
},
{
“partId”:“1”,
“mimeType”:“image/png”,
“文件名”:“smile.png”,
“标题”:[
{
“名称”:“内容类型”,
“值”:“image/png;name=”smile.png“
},
{
“名称”:“内容处置”,
“值”:“内联;文件名=\”smile.png“
},
{
“名称”:“内容传输编码”,
“值”:“base64”
},
{
“名称”:“内容ID”,
“值”:“\u003cii\u 15ade502eea840ce\u003e”
},
{
“名称”:“X-附件-Id”,
“价值”:“ii_15ade502eea840ce”
}
],
“正文”:{
“附件”是一个附件:“附件”是一个附件:“附件”是一个附件:“附件”是一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个附件,一个Wwwwwwwwwwwwwwwww6,一个框架,一个FF3 958,一个F3,一个F3 958,一个F3,一个F3 958 8,一个5,一个基金,一个基金,一个F3 958 8,一个,一个,一个基金,一个,一个基金,一个基金,一个8 8 8 8 8 8 8 8 8 8个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一"这是",
“尺寸”:8539
}
}
]
},
“sizeEstimate”:12800
};
函数getHtml(res){
变量部分=[res.payload];
while(零件长度){
var part=parts.shift();
如果(部分,部分){
零件=零件-混凝土(零件-零件);
}
如果(part.mimeType==='text/html'){
返回组件(escape(atob(part.body.data.replace(/\-/g,“+”).replace(/\\-/g,“/”)));
}
}
返回“”;
}
函数getAttachmentId(res、cid){
变量部分=[res.payload];
while(零件长度){
var part=parts.shift();
如果(部分,部分){
零件=零件-混凝土(零件-零件);
}
var headers=part.headers;
var indexedHeaders=页眉.reduce(函数(acc,页眉){
acc[header.name.toLowerCase()]=header.value;
返回acc;
}, {});
var contentId=indexedHeaders['content-id']| |';
var xAttachmentId=索引标题['x-attachment-id']||';
if(contentId.includes(cid)| xAttachmentId.includes(cid)){
返回part.body.attachmentId;
}
}
返回“”;
}
var html=getHtml(响应);
log(html);
//提取CID并在响应中查找匹配的附件
var attachmentId=getAttachmentId(响应“ii15ade502eea840ce”);
控制台日志(附件ID);
//从Gmail API获取附件并更换cid

//使用base64数据
谢谢!我已经成功提取了邮件附件,但不知道内联也存储为附件,也不知道如何将
cid
与文件名匹配。这个答案非常有用,谢谢!@Harmonic太好了!很高兴提供帮助。