Gmail API 找到草稿的父项
Gmail API find parent of a draft
如何在 Gmail 中找到草稿的父项(如果存在)?
当用户在 Gmail 线程 中回复特定邮件时,草稿会直接显示在其下方。比方说,一个线程中有 5 条消息,并且为回复第 3 条消息而制作了草稿……该草稿将始终显示为第 4 条消息。我正在尝试在我的应用程序中重现此内容,但我需要一种方法来 将草稿映射 到它所响应的消息(如果有的话)。
我一直在搜索返回的值,但找不到对以前消息的任何引用。
如何通过 API 执行此操作?
编辑:
您可以尝试使用Users.drafts: list
方法列出用户邮箱中的草稿。
示例 HTTP 请求:
GET https://www.googleapis.com/gmail/v1/users/userId/drafts
如果成功,它将return草稿父消息的threadId
。
{
"drafts": [
{
"id": "s:-ID",
"message": {
"id": "ID",
"threadId": "ID"
}
}
],
"resultSizeEstimate": 1
}
希望对您有所帮助!
您必须将草稿添加到同一线程,并确保 References
和 In-Reply-To
headers 符合 RFC 2822
标准,并且Subject
headers 匹配。
例子
我有一个包含 3 条消息的线程。我想创建一个草稿,作为对第二个草稿的回应。我得到了我要回复的消息的 Subject
、Message-ID
、References
、In-Reply-To
headers,以及 threadId
线程:
请求
GET https://www.googleapis.com/gmail/v1/users/me/messages/15a7a79ed814d9ec?format=metadata&metadataHeaders=Subject&metadataHeaders=Message-ID&metadataHeaders=References&metadataHeaders=In-Reply-To&access_token={access_token}
回应
{
"id": "15a7a79ed814d9ec",
"threadId": "15a7a79d389926b3",
"labelIds": [
"UNREAD",
"IMPORTANT",
"SENT",
"INBOX"
],
"snippet": "Test 2 2017-02-26 13:51 GMT+01:00 Emil Tholin <emtholin@gmail.com>: Test 1",
"historyId": "1138108",
"internalDate": "1488113495000",
"payload": {
"mimeType": "multipart/alternative",
"headers": [
{
"name": "In-Reply-To",
"value": "\u003cCADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com\u003e"
},
{
"name": "References",
"value": "\u003cCADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com\u003e"
},
{
"name": "Message-ID",
"value": "\u003cCADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com\u003e"
},
{
"name": "Subject",
"value": "Re: Test"
}
]
},
"sizeEstimate": 1333
}
那我就打个草稿,url-safebase64编码,在线程中创建:
// replace '+' with '-', replace '/' with '_', remove trailing '=' to make it url-safe
var draft = btoa([
'In-Reply-To: <CADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com>\r\n',
'References: <CADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com> <CADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com>\r\n',
'From: emtholin@gmail.com\r\n',
'To: emtholin@gmail.com\r\n',
'Subject: Re: Test\r\n'
].join('')).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
请求
POST https://www.googleapis.com/upload/gmail/v1/users/me/drafts?access_token={access_token}
{
"message": {
"raw": "SW4tUmVwbHktVG86IDxDQURzWkxSekhDX3NSNlRIZ2VyNmdrRGpKMzQ4WGJYZWhRMFlzRndIQWg3NjJodDIxNkFAbWFpbC5nbWFpbC5jb20-DQpSZWZlcmVuY2VzOiA8Q0FEc1pMUnpROFVRMUhKOD1Zc3ZSdi1qdHBSWT1zX3dabWJMOFJ6U2JDdHc0VDVBK3ZnQG1haWwuZ21haWwuY29tPiA8Q0FEc1pMUnpIQ19zUjZUSGdlcjZna0RqSjM0OFhiWGVoUTBZc0Z3SEFoNzYyaHQyMTZBQG1haWwuZ21haWwuY29tPg0KRnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBSZTogVGVzdA0K",
"threadId": "15a7a79d389926b3"
}
}
结果
如何在 Gmail 中找到草稿的父项(如果存在)?
当用户在 Gmail 线程 中回复特定邮件时,草稿会直接显示在其下方。比方说,一个线程中有 5 条消息,并且为回复第 3 条消息而制作了草稿……该草稿将始终显示为第 4 条消息。我正在尝试在我的应用程序中重现此内容,但我需要一种方法来 将草稿映射 到它所响应的消息(如果有的话)。
我一直在搜索返回的值,但找不到对以前消息的任何引用。
如何通过 API 执行此操作?
编辑:
您可以尝试使用Users.drafts: list
方法列出用户邮箱中的草稿。
示例 HTTP 请求:
GET https://www.googleapis.com/gmail/v1/users/userId/drafts
如果成功,它将return草稿父消息的threadId
。
{
"drafts": [
{
"id": "s:-ID",
"message": {
"id": "ID",
"threadId": "ID"
}
}
],
"resultSizeEstimate": 1
}
希望对您有所帮助!
您必须将草稿添加到同一线程,并确保 References
和 In-Reply-To
headers 符合 RFC 2822
标准,并且Subject
headers 匹配。
例子
我有一个包含 3 条消息的线程。我想创建一个草稿,作为对第二个草稿的回应。我得到了我要回复的消息的 Subject
、Message-ID
、References
、In-Reply-To
headers,以及 threadId
线程:
请求
GET https://www.googleapis.com/gmail/v1/users/me/messages/15a7a79ed814d9ec?format=metadata&metadataHeaders=Subject&metadataHeaders=Message-ID&metadataHeaders=References&metadataHeaders=In-Reply-To&access_token={access_token}
回应
{
"id": "15a7a79ed814d9ec",
"threadId": "15a7a79d389926b3",
"labelIds": [
"UNREAD",
"IMPORTANT",
"SENT",
"INBOX"
],
"snippet": "Test 2 2017-02-26 13:51 GMT+01:00 Emil Tholin <emtholin@gmail.com>: Test 1",
"historyId": "1138108",
"internalDate": "1488113495000",
"payload": {
"mimeType": "multipart/alternative",
"headers": [
{
"name": "In-Reply-To",
"value": "\u003cCADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com\u003e"
},
{
"name": "References",
"value": "\u003cCADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com\u003e"
},
{
"name": "Message-ID",
"value": "\u003cCADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com\u003e"
},
{
"name": "Subject",
"value": "Re: Test"
}
]
},
"sizeEstimate": 1333
}
那我就打个草稿,url-safebase64编码,在线程中创建:
// replace '+' with '-', replace '/' with '_', remove trailing '=' to make it url-safe
var draft = btoa([
'In-Reply-To: <CADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com>\r\n',
'References: <CADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com> <CADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com>\r\n',
'From: emtholin@gmail.com\r\n',
'To: emtholin@gmail.com\r\n',
'Subject: Re: Test\r\n'
].join('')).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
请求
POST https://www.googleapis.com/upload/gmail/v1/users/me/drafts?access_token={access_token}
{
"message": {
"raw": "SW4tUmVwbHktVG86IDxDQURzWkxSekhDX3NSNlRIZ2VyNmdrRGpKMzQ4WGJYZWhRMFlzRndIQWg3NjJodDIxNkFAbWFpbC5nbWFpbC5jb20-DQpSZWZlcmVuY2VzOiA8Q0FEc1pMUnpROFVRMUhKOD1Zc3ZSdi1qdHBSWT1zX3dabWJMOFJ6U2JDdHc0VDVBK3ZnQG1haWwuZ21haWwuY29tPiA8Q0FEc1pMUnpIQ19zUjZUSGdlcjZna0RqSjM0OFhiWGVoUTBZc0Z3SEFoNzYyaHQyMTZBQG1haWwuZ21haWwuY29tPg0KRnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBSZTogVGVzdA0K",
"threadId": "15a7a79d389926b3"
}
}
结果