Why can not get body field in response of Microsoft Graph API for listing messages?

111 Views Asked by At

I want to read certain email messages and filter them. I am using Microsoft Graph API to query the office 365 mail box as below. I also added API permission "Mail.ReadBasic.All" for getting mails from application.

graph_api_endpoint = 'https://graph.microsoft.com/v1.0/users/[email protected]/mailFolders/Inbox/messages?$select=body'

# Function to get inbox messages
def get_inbox_messages(access_token):
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Accept': 'application/json',
        'Prefer': 'outlook.body-content-type="text"',
    }

    response = requests.get(graph_api_endpoint, headers=headers)
    print('get_inbox_messages response:', response)
    return response.json().get('value', [])


# MSAL ConfidentialClientApplication
app = ConfidentialClientApplication(
    client_id,
    authority=authority,
    client_credential=client_secret,
)



token_response = app.acquire_token_for_client(scopes=[scope])
# Access token
access_token = token_response['access_token']
print(f"Access Token: {access_token}")

if access_token:
   inbox_messages = get_inbox_messages(access_token)
   print('Inbox Messages:', inbox_messages)
else:
   print('Failed to obtain access token')

But inbox_messages doesn't contain body fields. Its value is like this.

[{'@odata.etag': 'W/"CQAAABYAAAB3N5CnvFQSSqeWD3xLEpaUAACbgpYA"', 'id': 'AAMkAGYyMzUwZDAxLTJkNmItNGJjYi1iNThkLTcxMWU2MzIxMjg2ZgBGAAAAAAAKfqhNGZ8HSr-8OzkXZKcQBwB3N5CnvFQSSqeWD3xLEpaUAAAAAAEMAAB3N5CnvFQSSqeWD3xLEpaUAACb9YkJAAA='}, {'@odata.etag': 'W/"CQAAABYAAAB3N5CnvFQSSqeWD3xLEpaUAACbgpAa"', 'id': 'AAMkAGYyMzUwZDAxLTJkNmItNGJjYi1iNThkLTcxMWU2MzIxMjg2ZgBGAAAAAAAKfqhNGZ8HSr-8OzkXZKcQBwB3N5CnvFQSSqeWD3xLEpaUAAAAAAEMAAB3N5CnvFQSSqeWD3xLEpaUAACb9YkIAAA='}, {'@odata.etag': 'W/"CQAAABYAAAB3N5CnvFQSSqeWD3xLEpaUAACazuV6"', 'id': 'AAMkAGYyMzUwZDAxLTJkNmItNGJjYi1iNThkLTcxMWU2MzIxMjg2ZgBGAAAAAAAKfqhNGZ8HSr-8OzkXZKcQBwB3N5CnvFQSSqeWD3xLEpaUAAAAAAEMAAB3N5CnvFQSSqeWD3xLEpaUAACbQPdBAAA='}, {'@odata.etag': 'W/"CQAAABYAAAB3N5CnvFQSSqeWD3xLEpaUAACazuV4"', 'id': 'AAMkAGYyMzUwZDAxLTJkNmItNGJjYi1iNThkLTcxMWU2MzIxMjg2ZgBGAAAAAAAKfqhNGZ8HSr-8OzkXZKcQBwB3N5CnvFQSSqeWD3xLEpaUAAAAAAEMAAB3N5CnvFQSSqeWD3xLEpaUAACbQPdAAAA='}, {'@odata.etag': 'W/"CQAAABYAAAB3N5CnvFQSSqeWD3xLEpaUAACazuVn"', 'id': 'AAMkAGYyMzUwZDAxLTJkNmItNGJjYi1iNThkLTcxMWU2MzIxMjg2ZgBGAAAAAAAKfqhNGZ8HSr-8OzkXZKcQBwB3N5CnvFQSSqeWD3xLEpaUAAAAAAEMAAB3N5CnvFQSSqeWD3xLEpaUAACbQPc-AAA='}, {'@odata.etag': 'W/"CQAAABYAAAB3N5CnvFQSSqeWD3xLEpaUAACazuVg"', 'id': 'AAMkAGYyMzUwZDAxLTJkNmItNGJjYi1iNThkLTcxMWU2MzIxMjg2ZgBGAAAAAAAKfqhNGZ8HSr-8OzkXZKcQBwB3N5CnvFQSSqeWD3xLEpaUAAAAAAEMAAB3N5CnvFQSSqeWD3xLEpaUAACbQPc_AAA='}]

Please help me to get body in html format or text format.

1

There are 1 best solutions below

1
user2250152 On

This behavior can be cause by the permission Mail.ReadBasic.All.

With this permission the application cannot read body, previewBody, attachments and any extended properties.

To be able to read body, you need to grant higher privileged application permission Mail.Read.