Create Draft Message

VerifiedSafe

Creates a new draft message in the user's mailbox via the Microsoft Outlook Mail API. Use this when you need to compose a message over multiple steps, such as adding attachments or editing before sending. The draft is saved with isDraft set to true and can later be sent using the send draft operation.

Sby Skills Guide Bot
ProductivityBeginner
606/2/2026
Claude Code
#email#draft#outlook#microsoft

Recommended for

Our review

Creates a draft email message in the signed-in user's mailbox using the Microsoft Outlook Mail API.

Strengths

  • Enables composing an email in multiple steps before sending.
  • Supports To, CC, and BCC recipients.
  • Handles HTML formatting for the message body.
  • Returns a message object with an ID for tracking.

Limitations

  • Requires OAuth authentication with Mail.ReadWrite scope.
  • Does not allow adding attachments directly (separate operation).
  • Only works with Microsoft Outlook accounts.
When to use it

When you need to prepare a complex email with multiple recipients or formatted content before sending.

When not to use it

For immediate sending or very simple emails, prefer the direct send operation.

Security analysis

Safe
Quality score85/100

The skill describes a standard API operation to create a draft message using Microsoft Outlook Mail API with a local sandbox URL. It does not instruct any destructive or data exfiltration actions, and the curl example uses a placeholder token and localhost, posing no security risk.

No concerns found

Examples

Quarterly Review Meeting Draft
Create a draft email to Megan Bowen at megan@contoso.com with subject 'Quarterly Review Meeting' and a simple HTML body telling her to join the quarterly review.
Update to Multiple Recipients
Draft an email with subject 'Project Update' to John (john@example.com) and CC Sarah (sarah@example.com), using normal importance and plain text body saying 'Here is the update.'

Create Draft Message

Creates a new draft message in the signed-in user's mailbox. The draft can be updated and sent later using the send draft operation.

API Details

Sandbox

Mock server URL: http://localhost:8080/rest/microsoft-outlook-mail-api/1.0.0/me/messages

Required Headers

  • Authorization: Bearer {access-token}
  • Content-Type: application/json

OAuth Scopes

  • Mail.ReadWrite

Request Body

| Property | Type | Description | |----------|------|-------------| | subject | string | The subject of the message | | body | object | The body of the message with contentType (text/html) and content | | toRecipients | array | Array of recipient objects with emailAddress containing name and address | | ccRecipients | array | Array of CC recipient objects | | bccRecipients | array | Array of BCC recipient objects | | importance | string | The importance of the message: low, normal, high |

Example Request

curl -X POST "http://localhost:8080/rest/microsoft-outlook-mail-api/1.0.0/me/messages" \
  -H "Authorization: Bearer {access-token}" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Quarterly Review Meeting",
    "body": {
      "contentType": "html",
      "content": "<html><body>Please join us for the quarterly review...</body></html>"
    },
    "toRecipients": [
      {
        "emailAddress": {
          "name": "Megan Bowen",
          "address": "megan@contoso.com"
        }
      }
    ],
    "importance": "normal"
  }'

Example Response

{
  "id": "AAMkAGI1AAAGB1rUAAA=",
  "subject": "Quarterly Review Meeting",
  "bodyPreview": "Please join us for the quarterly review...",
  "body": {"contentType": "html", "content": "<html><body>Please join us for the quarterly review...</body></html>"},
  "importance": "normal",
  "isRead": false,
  "isDraft": true,
  "hasAttachments": false,
  "from": {"emailAddress": {"name": "Alex Wilber", "address": "alex@contoso.com"}},
  "toRecipients": [{"emailAddress": {"name": "Megan Bowen", "address": "megan@contoso.com"}}],
  "createdDateTime": "2024-01-15T10:30:00Z",
  "receivedDateTime": "2024-01-15T10:30:00Z",
  "parentFolderId": "AAMkAGI1AAAEJAAA="
}

Instructions

Use this operation to create a draft message that can be edited before sending. After creating the draft, you can add attachments using the create attachment operation and then send it using the send draft message operation. The response returns the created message with isDraft set to true and a status code of 201. This is the preferred workflow when you need to compose a message in multiple steps.

Related skills