Php Gmail API找到草稿的父项

Php Gmail API找到草稿的父项,php,gmail,gmail-api,email,Php,Gmail,Gmail Api,Email,如何在Gmail中找到草稿(如果存在)的父级 当用户在Gmail线程中响应特定消息时,草稿会直接显示在其下方。比如说,一个线程中有5条消息,第三条消息的回复是草稿。。。该草案将始终作为第四条信息出现。我正试图在我的应用程序中重现这一点,但我需要一种方法将草稿映射到它响应的消息(如果有) 我一直在搜索返回的值,但找不到以前消息的任何引用 如何通过API实现这一点 编辑:您可以尝试使用在用户邮箱中列出草稿的方法 HTTP请求示例: GEThttps://www.googleapis.com/gmai

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

当用户在Gmail线程中响应特定消息时,草稿会直接显示在其下方。比如说,一个线程中有5条消息,第三条消息的回复是草稿。。。该草案将始终作为第四条信息出现。我正试图在我的应用程序中重现这一点,但我需要一种方法将草稿映射到它响应的消息(如果有)

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

如何通过API实现这一点

编辑:

您可以尝试使用在用户邮箱中列出草稿的方法

HTTP请求示例:
GEThttps://www.googleapis.com/gmail/v1/users/userId/drafts

如果成功,它将返回草稿父消息的
threadId

{
 "drafts": [
  {
   "id": "s:-ID",
   "message": {
    "id": "ID",
    "threadId": "ID"
   }
  }
 ],
 "resultSizeEstimate": 1
}

希望这有帮助

您必须将草稿添加到同一个线程,并确保
引用
和回复标题的
符合
RFC 2822
标准,并且
主题
标题匹配

示例

{
 "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
}
我有一个包含3条消息的线程。我想创建一个草稿,作为对第二个草稿的响应。我得到
主题
消息ID
引用
回复我想回复的消息的
标题,以及线程的
线程ID

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

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}
POST https://www.googleapis.com/upload/gmail/v1/users/me/drafts?access_token={access_token}

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

{
 "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
}
然后我只是做一个草稿,url安全base64编码,并在线程中创建它:

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

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}
POST https://www.googleapis.com/upload/gmail/v1/users/me/drafts?access_token={access_token}

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

谢谢您的回复。但这不是我想要的。我正在寻找草稿在显示线程消息的上下文中响应的即时消息。threadId将指示线程中第一条消息的id,但无助于确定线程中草稿的位置。假设草稿响应的消息在11条消息中处于第4位。我需要一种方法将草稿放在它响应的消息正下方的第5个位置。我目前的领导是使用“消息Id”、“回复”、“引用”和其他方法将消息重新缝合在一起。我以前以html格式转储了数据,因此这些值似乎不存在。