Gmail API查找草稿的父母 [英] Gmail API find parent of a draft

查看:258
本文介绍了Gmail API查找草稿的父母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在Gmail中找到草稿的父母(如果存在)?



当用户回复Gmail主题中的特定邮件时,草稿直接显示在其下方。比方说,一个线程中有5条消息,草稿是在第3条回复的,该草案将始终显示为第4条消息。我正在尝试在我的应用程序中重现这一点,但是我需要一种方法来将一个草案映射到它所响应的消息中。



我一直在搜索返回的值,但找不到任何对以前的消息的引用。



如何通过API进行此操作?



编辑:

解决方案

您必须将草稿添加到同一个线程中,并确保引用 In-Reply-To 标头符合 RFC 2822 标准,而 Subject 头匹配。



示例



我有一个线程3条消息。我想创建一个草案,这将是对第二个的回应。我得到主题 Message-ID 参考文献 要回复的消息的头文件,线程的 threadId / p>

请求

  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,
重要,
SENT,
INBOX
],
snippet:Test 2 2017-02-26 13: 51 GMT + 01:00 Emil Tholin& lt; emtholin@gmail.com& gt ;: Test 1,
historyId:1138108,
internalDate:1488113495000,
payload:{
mimeType:multipart /
{
name:In-Reply-To,
value:\\\
},
{
name:References,
value:\\\
},
{
name:Message-ID,
value: \\\
},
{
name:Subject,
value:Re:Test
}
]
},
sizeEstimate:1333
}

然后我只是做一个草稿,url-safe base64编码,并在线程中创建它:

  //用' - '替换'+',用'_'替换'/',删除尾随'='使其成为url-safe 
var draft = btoa([
'In -Reply-To:< CADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A @ mail.gmail.com> \r\\\
',
'参考文献:  CADsZLRzQ8UQ1HJ8=YsvRv-jtpRY=s_wZmbL8RzSbCtw4T5A+vg@mail.gmail.com> < CADsZLRzHC_sR6THger6gkDjJ348XbXehQ0YsFwHAh762ht216A@mail.gmail.com> \r\\\
',
'From:emtholin@gmail.com \\\
',
'To:emtholin@gmail.com \\\\
',
'主题:Re:Test\r\\\
'
] .join(''))。replace(/ \ + / g,' - ' ).replace(/ \ // g,'_')。replace(/ = + $ /,'');

请求

  POST https://www.googleapis.com/upload/gmail/v1/users/me/drafts?access_token={access_token} 

{
的消息:{
原始: SW4tUmVwbHktVG86IDxDQURzWkxSekhDX3NSNlRIZ2VyNmdrRGpKMzQ4WGJYZWhRMFlzRndIQWg3NjJodDIxNkFAbWFpbC5nbWFpbC5jb20-DQpSZWZlcmVuY2VzOiA8Q0FEc1pMUnpROFVRMUhKOD1Zc3ZSdi1qdHBSWT1zX3dabWJMOFJ6U2JDdHc0VDVBK3ZnQG1haWwuZ21haWwuY29tPiA8Q0FEc1pMUnpIQ19zUjZUSGdlcjZna0RqSjM0OFhiWGVoUTBZc0Z3SEFoNzYyaHQyMTZBQG1haWwuZ21haWwuY29tPg0KRnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBSZTogVGVzdA0K,
的threadId: 15a7a79d389926b3
}
}

结果




How can I find the parent of a draft (if it exists) in Gmail?

When the user responds to a particular message in a Gmail Thread, the draft appears directly below it. Say for example, there was 5 messages in a thread and a draft was made in reply to the 3rd one... that draft would always appear as the 4th message. I'm attempting to reproduce this in my application, but I need a way of mapping a draft to the message it is in response to if any.

I've been searching through the values returned, but cannot find any reference to previous messages.

How can I do this through the API?

Edit:

解决方案

You have to add the draft to the same thread, and make sure the References and In-Reply-To headers are in compliance with the RFC 2822 standard, and that the Subject headers match.

Example

I have a thread with 3 messages. I want to create a draft that will be a response to the second one. I get the Subject, Message-ID, References, In-Reply-To headers of the message I would like to respond to, and the threadId of the thread:

Request

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}

Response

{
 "id": "15a7a79ed814d9ec",
 "threadId": "15a7a79d389926b3",
 "labelIds": [
  "UNREAD",
  "IMPORTANT",
  "SENT",
  "INBOX"
 ],
 "snippet": "Test 2 2017-02-26 13:51 GMT+01:00 Emil Tholin &lt;emtholin@gmail.com&gt;: 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
}

Then I just make a draft, url-safe base64 encode it, and create it in the thread:

// 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(/=+$/, '');

Request

POST https://www.googleapis.com/upload/gmail/v1/users/me/drafts?access_token={access_token}

{
  "message": {
    "raw": "SW4tUmVwbHktVG86IDxDQURzWkxSekhDX3NSNlRIZ2VyNmdrRGpKMzQ4WGJYZWhRMFlzRndIQWg3NjJodDIxNkFAbWFpbC5nbWFpbC5jb20-DQpSZWZlcmVuY2VzOiA8Q0FEc1pMUnpROFVRMUhKOD1Zc3ZSdi1qdHBSWT1zX3dabWJMOFJ6U2JDdHc0VDVBK3ZnQG1haWwuZ21haWwuY29tPiA8Q0FEc1pMUnpIQ19zUjZUSGdlcjZna0RqSjM0OFhiWGVoUTBZc0Z3SEFoNzYyaHQyMTZBQG1haWwuZ21haWwuY29tPg0KRnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBSZTogVGVzdA0K",
    "threadId": "15a7a79d389926b3"
  }
}

Result

这篇关于Gmail API查找草稿的父母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆