CLI Reference
Complete reference for all outlookctl commands and options.
Overview
All commands follow this pattern:
Global Options
| Option | Description |
|---|---|
--output |
Output format: json or text (default: json) |
--version |
Show version number and exit |
--help |
Show help message and exit |
Validates environment and prerequisites. Run this first to ensure everything is set up correctly.
Checks Performed
- ✓ Windows OS detection
- ✓ pywin32 installation
- ✓ Outlook COM availability
- ✓ Outlook executable location
List messages from a folder. Returns message summaries including subject, sender, date, and read status.
Options
| Option | Default | Description |
|---|---|---|
--folder | inbox | Folder to list from |
--count | 10 | Number of messages to return |
--unread-only | false | Only return unread messages |
--since | - | ISO date filter (messages after) |
--until | - | ISO date filter (messages before) |
--include-body-snippet | false | Include body preview |
--body-snippet-chars | 200 | Max characters for snippet |
Folder Specifications
inbox Default inboxsent Sent itemsdrafts Drafts folderdeleted Deleted itemsoutbox Outboxjunk Junk/spam
Custom folders: by-name:FolderName or by-path:Inbox/Subfolder
Get a single message by ID. Returns full message details including body content when requested.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Message entry ID |
--store | Required | Message store ID |
--include-body | Optional | Include full message body |
--include-headers | Optional | Include message headers |
--max-body-chars | Optional | Limit body length |
Search messages with various filters. Combines multiple criteria with AND logic.
Options
| Option | Default | Description |
|---|---|---|
--folder | inbox | Folder to search |
--query | - | Free text search (subject/body) |
--from | - | Filter by sender |
--to | - | Filter by To recipient new |
--cc | - | Filter by CC recipient new |
--subject-contains | - | Filter by subject text |
--unread-only | false | Only unread messages |
--has-attachments | false | Only with attachments new |
--no-attachments | false | Only without attachments new |
--since | - | ISO date filter (after) |
--until | - | ISO date filter (before) |
--count | 50 | Maximum results |
Create a draft message. The draft is saved to the Drafts folder and can be reviewed before sending.
Options
| Option | Description |
|---|---|
--to | To recipients (comma-separated) |
--cc | CC recipients (comma-separated) |
--bcc | BCC recipients (comma-separated) |
--subject | Email subject |
--body-text | Plain text body |
--body-html | HTML body |
--attach | File path to attach (repeatable) |
--reply-to-id | Entry ID of message to reply to |
--reply-to-store | Store ID of message to reply to |
--reply-all | Reply-all instead of reply new |
Send a draft or new message. Requires explicit confirmation.
--confirm-send YES. The recommended workflow is to create a draft first, review it, then send.
Safety Options
| Option | Description |
|---|---|
--confirm-send | Must be exactly "YES" to proceed |
--confirm-send-file | Path to file containing "YES" |
--unsafe-send-new | Required for sending new message directly |
--log-body | Include body in audit log |
Move a message to another folder. Returns the new message ID after moving.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Message entry ID |
--store | Required | Message store ID |
--dest | Required | Destination folder (same specs as list) |
Delete a message. By default moves to Deleted Items; use --permanent to skip the trash.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Message entry ID |
--store | Required | Message store ID |
--permanent | Optional | Permanently delete (skip Deleted Items) |
Mark a message as read or unread.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Message entry ID |
--store | Required | Message store ID |
--unread | Optional | Mark as unread instead of read |
Create a forward draft for a message. The forward is saved as a draft for review before sending.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Original message entry ID |
--store | Required | Original message store ID |
--to | Required | To recipients (comma-separated) |
--cc | Optional | CC recipients |
--bcc | Optional | BCC recipients |
--message | Optional | Additional text to prepend |
Save attachments from a message to disk. Creates the destination directory if needed.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Message entry ID |
--store | Required | Message store ID |
--dest | Required | Destination directory |
List all available calendars across all accounts, including subscribed ICS calendars, shared calendars, and internet calendars.
Output Fields
| Field | Description |
|---|---|
name | Calendar display name |
path | Full path in folder hierarchy |
store | Account/store containing the calendar |
Usage
Use this to discover calendar names, then access them with --calendar "Name" in other commands.
List calendar events within a date range. Defaults to the next 7 days from today.
Options
| Option | Default | Description |
|---|---|---|
--start | today | Start date |
--end | - | End date (overrides --days) |
--days | 7 | Number of days from start |
--calendar | - | Calendar name or email for shared calendar |
--count | 100 | Maximum events |
Get detailed information about a calendar event including attendees and recurrence.
Create a calendar event or meeting. Meetings with attendees are saved as drafts.
Options
| Option | Default | Description |
|---|---|---|
--subject | Required | Event title |
--start | Required | Start time |
--duration | 60 | Duration in minutes |
--end | - | End time |
--location | - | Location |
--attendees | - | Required attendees |
--optional-attendees | - | Optional attendees |
--all-day | false | All-day event |
--busy-status | busy | free, tentative, busy, etc. |
--recurrence | - | Recurrence pattern |
Send meeting invitations. Requires explicit confirmation.
--confirm-send YES.
Respond to a meeting invitation.
Options
| Option | Description |
|---|---|
--response | accept, decline, or tentative |
--no-response | Don't send response to organizer |
Update an existing calendar event. Only specified fields are modified.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Event entry ID |
--store | Required | Event store ID |
--subject | Optional | New subject |
--start | Optional | New start time |
--end | Optional | New end time |
--duration | Optional | New duration (minutes) |
--location | Optional | New location |
--body | Optional | New description |
--reminder | Optional | New reminder (minutes) |
--busy-status | Optional | New show-as status |
Delete a calendar event. For meetings you organized, sends cancellation to attendees by default.
Options
| Option | Required | Description |
|---|---|---|
--id | Required | Event entry ID |
--store | Required | Event store ID |
--no-cancel | Optional | Don't send cancellation to attendees |