Javascript 我还想获得Gmail API消息附带的附件
好的,有了这段代码,我可以通过电子邮件获得实际的邮件内容,但我想要的是,我也想获得邮件和附件。为了列出附件,以及稍后提供下载附件gmail api的选项,可以做些什么Javascript 我还想获得Gmail API消息附带的附件,javascript,reactjs,gmail-api,email-attachments,Javascript,Reactjs,Gmail Api,Email Attachments,好的,有了这段代码,我可以通过电子邮件获得实际的邮件内容,但我想要的是,我也想获得邮件和附件。为了列出附件,以及稍后提供下载附件gmail api的选项,可以做些什么 var ifrm = document.getElementById("iframe").contentWindow.document; ifrm.body.innerHTML = getMessageBody(message.payload); }; let getMessageBo
var ifrm = document.getElementById("iframe").contentWindow.document;
ifrm.body.innerHTML = getMessageBody(message.payload);
};
let getMessageBody = (message) => {
var encodedBody = "";
if (typeof message.parts === "undefined") {
encodedBody = message.body.data;
} else {
encodedBody = getHTMLPart(message.parts);
}
return Base64.decode(encodedBody);
};
let 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 "";
};
解决方案
您正在使用Users.messages:get
端点。检索邮件正文可以,但检索附件必须使用Users.messages.attachments:get
。您可以找到该文档的链接
建议的代码编辑:
getAttachments=(消息,回调)=>{
var parts=message.payload.parts;
对于(变量i=0;i0){
var attachId=part.body.attachmentId;
var request=gapi.client.gmail.users.messages.attachments.get({
“id”:附件,
'messageId':message.id,
“userId”:userId
});
请求.执行(函数(附件){
回调(part.filename、part.mimeType、附件);
});
}
}
}
getOneMessage=(messageId)=>{
返回window.gapi.client.gmail.users.messages
.得到({
用户名:“我”,
id:messageId,
})
.那么(
(回应)=>{
这是我的国家({
消息:response.result,
});
//获取附件并对其进行处理
getAttachments(response.result,回调);
},
(错误)=>{
错误(“getMessage错误”,err);
}
);
};
handleMessageClick=(e)=>{
const messageId=e.currentTarget.getAttribute(“id”);
this.getOneMessage(messageId);
参考文献
强烈建议您不要尝试自己动手,而是使用一个为您包装api的库。请在脚本中包含您如何使用gmail api获取邮件正文。我已经用gmail api更新了问题。这样我甚至无法加载邮件。这是存储库,请导航到src/app.js以获取建议的内容nges。这怎么不起作用?加载邮件的代码与您发布的代码相同。
getOneMessage = (messageId) => {
return window.gapi.client.gmail.users.messages
.get({
userId: "me",
id: messageId,
})
.then(
(response) => {
this.setState({
message: response.result,
});
},
(err) => {
console.error("getMessage error", err);
}
);
};
handleMessageClick = (e) => {
const messageId = e.currentTarget.getAttribute("id");
this.getOneMessage(messageId);
getAttachments = (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);
});
}
}
}
getOneMessage = (messageId) => {
return window.gapi.client.gmail.users.messages
.get({
userId: "me",
id: messageId,
})
.then(
(response) => {
this.setState({
message: response.result,
});
// Get the attachment and do something with it
getAttachments(response.result, callback);
},
(err) => {
console.error("getMessage error", err);
}
);
};
handleMessageClick = (e) => {
const messageId = e.currentTarget.getAttribute("id");
this.getOneMessage(messageId);