如何在gmail api中获取带有电子邮件标题和发件人的电子邮件列表?

时间:2019-09-11 09:02:18

标签: google-api gmail-api

我尝试使用 GET https://www.googleapis.com/gmail/v1/users/userId/messages

但仅获得id和threadId作为响应。

我想显示带有标题和电子邮件的电子邮件列表。是否存在一个API来获取信息或以任何方式获取信息?

2 个答案:

答案 0 :(得分:-1)

user messages.list方法仅返回消息ID和线程ID的消息列表。这是API本身的限制,您无能为力。它是免费的API,并且受Google的限制。

{
 "messages": [
  {
   "id": "16d1f7849145662a",
   "threadId": "16d1f55457d4e145"
  },
  {
   "id": "16d1f69d541016ee",
   "threadId": "16d1f55457d4e145"
  },

要获取有关该消息的其他信息,您需要对每条消息执行message.get

GET https://www.googleapis.com/gmail/v1/users/userId/messages/id

对不起,这是获得大量收益的唯一途径。

批处理

您可以尝试批处理batch,一次批处理请求中最多只能有100个呼叫。如果您需要拨打更多电话,请使用多个批处理请求。

邮递员头文件

  

Content-Type多部分/混合; boundary = batch_foobarbaz; type = application / http

     

授权载体ya29.GluBB7_cEfLMThXKuxR_9g8YyjSTLwBHRHdPtiYXwDABKQlrbxEyFqSFsnFYTs5b54W7

     

接受编码应用程序/ gzip

邮递员尸体

--batch_foobarbaz
Content-Type: application/http


GET gmail/v1/users/me/messages/16d24956228a98c4
Accept: application/json; charset=UTF-8

--batch_foobarbaz
Content-Type: application/http


GET gmail/v1/users/me/messages/16d24956228a98c4
Accept: application/json; charset=UTF-8

--batch_foobarbaz--

SMTP

除此之外,您还可以通过smtp server directly。这将需要一种能够处理直接调用邮件服务器的编程语言。

答案 1 :(得分:-1)

Gmail API的设计方式是

  1. 您需要使用q获取所有感兴趣的电子邮件的ID(可以使用搜索参数GET https://www.googleapis.com/gmail/v1/users/userId/messages来过滤结果)-就像您已经做过的一样
  2. 您需要使用GET https://www.googleapis.com/gmail/v1/users/userId/messages/id通过邮件ID分别检索每个邮件

如果您使用自己选择的语言编写代码,则可以通过循环自动执行此过程。

示例如何使用Apps Script

function myFunction() {
  var myMessages=Gmail.Users.Messages.list("me",{'maxResults': 5 }).messages;
  Logger.log(myMessages);
  for(var i=0;i<myMessages.length;i++){
    var id=myMessages[i].id;
    Gmail.Users.Messages.get('me', id).payload.headers.forEach(function(e){
      if(e.name=="Subject"||e.name=="From"){
        Logger.log(e.name+": "+e.value)
      }
     }
    );
  }
}