GMail API-获取某些邮件标题或字段

时间:2019-05-31 20:53:41

标签: php gmail-api

我已经通过G Suite帐户和服务帐户成功连接了GMail API。我可以获得消息列表,并且可以按ID检索消息。我正在使用PHP。

我遇到的问题是获取例如FROM或TO标头,SUBJECT或代码段字段。

bitcoin-js

这将返回代码段,但不返回主题或from或labelId。

如果我使用GMail“尝试此API”并使用消息的ID,并在“字段”条目中使用“代码段”,那么我只需将代码段重新获取为:

$optParam = array('format' => 'metadata', 'metadataHeaders'=>['subject','from'], 'fields'=>['snippet','labelIds']);
$fullMessage = $service->users_messages->get($user, $id, $optParam);

如果我使用:

{
 "snippet": "Short snippet of the message"
}

我确实获得了3个标头,但我还获得了更多信息,包括标签和代码段-每封邮件大约3K。

我似乎无法指定一小部分数据。我需要做的是将消息显示为带有主题,日期/时间,从/到的列表。

我不太在乎数据量,但平均只需要3.5秒就能检索到14条消息的数据!

有没有一种方法可以限制这一点,这样我就不会获得所有“额外”数据或以某种方式加快检索速度?

非常感谢您的任何建议:)

1 个答案:

答案 0 :(得分:0)

发送请求将涉及指定元数据键以及要获取的字段的参数名称。您可以将HTTP GET请求与URI一起使用,以通过https://www.googleapis.com/gmail/v1/users/me/messages/<MESSAGE_ID>?format=metadata&metadataHeaders=to&metadataHeaders=from&metadataHeaders=subject&fields=snippet%2C+payload%2Fheaders获取“至”,“来自”,“主题”和“代码段”,这也将限制您获得的标头。

在PHP中,您可以使用以下代码:

$optParam = array('format' => 'metadata', 'metadataHeaders'=>['subject', 'from', 'to'], 'fields'=>'payload/headers,snippet');

请注意,fields参数needs to be sent as a string and not an array

另外请注意,在known issue with the GMail API中使用https://www.googleapis.com/auth/gmail.metadata范围不会返回该代码段。 您需要改用https://www.googleapis.com/auth/gmail.readonly

您还可以在一个网络呼叫中提出一批请求,这将有助于加快整体执行时间,如here所述。