【问题标题】:How to search for specific string but only return 1 email per email address?如何搜索特定字符串但每个电子邮件地址仅返回 1 封电子邮件?
【发布时间】:2016-01-20 03:43:07
【问题描述】:

gmail API 是否允许搜索字符串并返回所有包含此字符串的邮件,但将列表限制为每个电子邮件地址 1 封电子邮件。

例如,我想查找所有包含特定用户名的邮件,但列表中每个地址只包含一封电子邮件。

【问题讨论】:

    标签: gmail gmail-api


    【解决方案1】:

    遗憾的是,Gmail API 不支持这些类型的复杂查询。

    不过,按照这些思路可以完成它:

    1. List messages 将您的搜索字符串作为q 参数,直到响应中没有nextPageToken(然后您将获得查询的所有结果)。

    2. Get all matching messages,只要求From-header,并自己查找所有唯一发件人(batch requests 非常适合此用例)。

    示例

    列出消息 ID

    q = feel the bern
    fields = messages(id),nextPageToken
    
    GET https://www.googleapis.com/gmail/v1/users/me/messages?q=feel+the+bern&fields=messages(id)%2CnextPageToken&access_token={YOUR_API_KEY}
    

    回应

    {
     "messages": [
      {
       "id": "151c1de994ad5e43"
      },
      {
       "id": "1514f614e6c07c3f"
      }, ...
     ]
    }
    

    获取每条消息(批量)

    format = metadata
    metadataHeaders = from
    fields = id,payload/headers
    
    GET https://www.googleapis.com/gmail/v1/users/me/messages/151c1de994ad5e43?format=metadata&metadataHeaders=from&fields=id%2Cpayload%2Fheaders&access_token={YOUR_API_KEY}
    

    回应

    {
     "id": "151c1de994ad5e43",
     "payload": {
      "headers": [
       {
        "name": "From",
        "value": "Official Bernie Store <info@berniesanders.com>"
       }
      ]
     }
    },
    {
     "id": "151c1de994ad3e22",
     "payload": {
      "headers": [
       {
        "name": "From",
        "value": "Emil Tholin <emtholin@gmail.com>"
       }
      ]
     }
    }, ...
    

    然后你可以通过电子邮件地址过滤掉邮件,然后得到剩下的邮件的整个邮件。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2019-12-31
      • 2013-07-29
      • 2017-12-21
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多