抓取电子邮件时,我运行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替换为图像的本地路径。
那么有谁知道如何获得这些嵌入式图像或有任何建议?提前谢谢!
答案 0 :(得分:1)
图像将被提取到附件中。在响应中查找包含cid
或Content-ID
标题中X-Attachment-Id
的部分,获取附件,并将base64数据作为图像源而不是{{1}插入}。
示例强>
cid