I'm using Gmail API to fetch email address (of the sender) for last 10 emails.
URL: https://developers.google.com/gmail/api/v1/reference/users/messages/list
But Users.messages: list
API returns message resource (which includes only email ID).
And for fetching sender email address, I have to make one Users.messages: get
API call for each message resources, that's increases load time.
How can I fetch email address of sender along with email ID in the response of Users.messages: list
API?
OR Somehow I can fetch last 10 sender email address in one API call?
My current code Example:
$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']);
}
How can I fetch email address of sender along with email ID in the response of Users.messages: list API?
You can't, Users.messages: get
needs to be used to retrieve this information.
As per the Users.messages: list
documentation about the properties of the response resource:
messages[]
: List of messages. Note that each message resource contains only an id and a threadId. Additional message details can be fetched using themessages: get
method.
The Users.message
resource page gives more information about the full response which is able to be retrieved from 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
}
In order to get the message ID and sender email address, you need to make a Users.messages: list
call to get the email IDs, then make a Users.messages: get
request on each message ID to get the sender email. As there is no Users.messages: batchGet
method, there is unfortunately no way around this.