Update message

Update the properties of a message object.


One of the following permissions is required to call this API. To learn more, including how to choose permissions, see Permissions.

Permission type Permissions (from least to most privileged)
Delegated (work or school account) Mail.ReadWrite
Delegated (personal Microsoft account) Mail.ReadWrite
Application Mail.ReadWrite

HTTP request

PATCH /me/messages/{id}
PATCH /users/{id | userPrincipalName}/messages/{id}
PATCH /me/mailFolders/{id}/messages/{id}
PATCH /users/{id | userPrincipalName}/mailFolders/{id}/messages/{id}

Request headers

Name Type Description
Authorization string Bearer {token}. Required.
Content-Type string Nature of the data in the body of an entity. Required.

Request body

In the request body, supply the values for relevant fields that should be updated. Existing properties that are not included in the request body will maintain their previous values or be recalculated based on changes to other property values. For best performance you shouldn't include existing values that haven't changed. The following properties can be updated.

Property Type Description
bccRecipients Recipient The Bcc recipients for the message.
body ItemBody The body of the message. Updatable only if isDraft = true.
categories String collection The categories associated with the message.
ccRecipients Recipient collection The Cc recipients for the message.
flag followupFlag The flag value that indicates the status, start date, due date, or completion date for the message.
from Recipient The mailbox owner and sender of the message. Must correspond to the actual mailbox used.
importance String The importance of the message. The possible values are: Low, Normal, High.
inferenceClassification String The classification of the message for the user, based on inferred relevance or importance, or on an explicit override. The possible values are: focused or other.
internetMessageId String The message ID in the format specified by RFC2822. Updatable only if isDraft = true.
isDeliveryReceiptRequested Boolean Indicates whether a read receipt is requested for the message.
isRead Boolean Indicates whether the message has been read.
isReadReceiptRequested Boolean Indicates whether a read receipt is requested for the message.
multiValueExtendedProperties multiValueLegacyExtendedProperty collection The collection of multi-value extended properties defined for the message. Nullable.
replyTo Recipient collection The email addresses to use when replying. Updatable only if isDraft = true.
sender Recipient The account that is actually used to generate the message. Updatable when sending a message from a shared mailbox, or sending a message as a delegate. In any case, the value must correspond to the actual mailbox used.
singleValueExtendedProperties singleValueLegacyExtendedProperty collection The collection of single-value extended properties defined for the message. Nullable.
subject String The subject of the message. Updatable only if isDraft = true.
toRecipients Recipient collection The To recipients for the message.

Since the message resource supports extensions, you can use the PATCH operation to add, update, or delete your own app-specific data in custom properties of an extension in an existing message instance.


If successful, this method returns a 200 OK response code and updated message object in the response body.



Here is an example of the request.

PATCH https://graph.microsoft.com/v1.0/me/messages/{id}
Content-type: application/json
Content-length: 248

  "subject": "subject-value",
  "body": {
    "contentType": "",
    "content": "content-value"
  "inferenceClassification": "other"

Here is an example of the response. Note: The response object shown here may be truncated for brevity. All of the properties will be returned from an actual call.

HTTP/1.1 200 OK
Content-type: application/json
Content-length: 248

  "receivedDateTime": "datetime-value",
  "sentDateTime": "datetime-value",
  "hasAttachments": true,
  "subject": "subject-value",
  "body": {
    "contentType": "",
    "content": "content-value"
  "bodyPreview": "bodyPreview-value",
  "inferenceClassification": "other"

SDK sample code

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var message = new Message
	Subject = "subject-value",
	Body = new ItemBody
		ContentType = BodyType.Text,
		Content = "content-value"
	InferenceClassification = InferenceClassificationType.Other

await graphClient.Me.Messages["{id}"]

Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.

See also