在Gmail邮件列表API中获取发件人的电子邮件地址

时间:2020-05-18 18:05:01

标签: php google-api gmail-api

我正在使用Gmail API来获取最近10封电子邮件的(发件人)电子邮件地址。
网址:https://developers.google.com/gmail/api/v1/reference/users/messages/list

但是Users.messages: list API返回消息资源(仅包含电子邮件ID)。
为了获取发件人的电子邮件地址,我必须为每个消息资源进行一个Users.messages: get API调用,这会增加加载时间。

如何在Users.messages: list API的响应中获取发件人的电子邮件地址以及电子邮件ID?
或者以某种方式可以通过一个API调用获取最后10个发件人的电子邮件地址?

我当前的代码示例:

$params = [
    'labelIds' => 'INBOX',
    'maxResults' => 10
];
$emails = $service->users_messages->listUsersMessages('me', $params);
foreach ($emails->getMessages() as $email) {
    $email_data = $service->users_messages->get('me', $email->id, ['format' => 'full']);
}

1 个答案:

答案 0 :(得分:0)

如何在Users.messages:list API的响应中获取发件人的电子邮件地址以及电子邮件ID?

答案:

您不能使用Users.messages: get来检索此信息。

更多信息:

根据Users.messages: list文档中有关响应资源的属性:

messages[]消息列表。。请注意,每个消息资源仅包含一个id和一个threadId。可以使用messages: get方法获取其他消息详细信息。

Users.message resource页面提供了有关完整响应的更多信息,该信息可以从messages: get中检索:

{
  "id": string,
  "threadId": string,
  "labelIds": [
    string
  ],
  "snippet": string,
  "historyId": unsigned long,
  "internalDate": long,
  "payload": {
    "partId": string,
    "mimeType": string,
    "filename": string,
    "headers": [
      {
        "name": string,
        "value": string
      }
    ],
    "body": users.messages.attachments Resource,
    "parts": [
      (MessagePart)
    ]
  },
  "sizeEstimate": integer,
  "raw": bytes
}

您需要做什么:

为了获取消息ID和发件人电子邮件地址,您需要进行Users.messages: list调用以获取电子邮件ID,然后对每个消息ID进行Users.messages: get请求以获取发件人电子邮件。 由于没有Users.messages: batchGet方法,因此无法解决此问题。

我知道这通常是个坏消息,但我希望这对您有帮助!

参考文献: