### Install Dependencies with uv Source: https://gmickel.github.io/outlookctl/index.html Install project dependencies using the uv package manager. Ensure uv is installed and configured. ```bash uv sync ``` -------------------------------- ### Check pywin32 Installation Source: https://gmickel.github.io/outlookctl/troubleshooting.html Verify that the pywin32 library is correctly installed and accessible by running a simple Python command. ```python python -c "import win32com.client; print('OK')" ``` -------------------------------- ### Install pywin32 Dependency Source: https://gmickel.github.io/outlookctl/troubleshooting.html Install the pywin32 library, which is required for Outlook COM automation. Recommended to use uv for management. ```bash # Using uv (recommended) uv add pywin32 uv sync # Or with pip pip install pywin32 ``` -------------------------------- ### Install OpenAI Codex AI Skill Source: https://gmickel.github.io/outlookctl/index.html Install the AI Skill for OpenAI Codex using the provided script. This enables AI-powered email and calendar management. ```bash # For OpenAI Codex uv run python tools/install_skill.py --codex ``` -------------------------------- ### Draft-First Workflow Example Source: https://gmickel.github.io/outlookctl/index.html Demonstrates the three-step draft-first workflow for sending emails or calendar invites: create draft, review, and confirm send. This ensures accidental sends are prevented. ```bash # Step 1: Create draft outlookctl draft \ --to "client@company.com" \ --subject "Project Update" \ --body-text "Here's the update..." # Step 2: Review in Outlook or CLI outlookctl get --id --store # Step 3: Send with explicit confirmation outlookctl send \ --draft-id \ --draft-store \ --confirm-send YES ``` -------------------------------- ### Clone the outlookctl Repository Source: https://gmickel.github.io/outlookctl/index.html Clone the outlookctl GitHub repository to your local machine to get started with the project. ```bash git clone https://github.com/gmickel/outlookctl.git cd outlookctl ``` -------------------------------- ### Run Quick Diagnostics with Doctor Command Source: https://gmickel.github.io/outlookctl/troubleshooting.html Use the doctor command to check all prerequisites and get specific remediation advice. ```bash uv run python -m outlookctl.cli doctor ``` -------------------------------- ### Install Claude Code AI Skill Source: https://gmickel.github.io/outlookctl/index.html Install the AI Skill for Claude Code using the provided script. This enables AI-powered email and calendar management. ```bash # For Claude Code uv run python tools/install_skill.py --personal ``` -------------------------------- ### Opt-In Body Access Examples Source: https://gmickel.github.io/outlookctl/security.html Explicitly request message body content using --include-body or --include-body-snippet flags. Use --body-snippet-chars to limit the size of the snippet. ```bash # Get full body uv run python -m outlookctl.cli get \ --id "..." --store "..." \ --include-body # Get truncated snippet uv run python -m outlookctl.cli list \ --include-body-snippet \ --body-snippet-chars 200 ``` -------------------------------- ### Create Calendar Event Source: https://gmickel.github.io/outlookctl/cli.html Creates a new calendar event or meeting. Meetings with attendees are saved as drafts. Specify subject, start time, duration, and attendees. ```bash uv run python -m outlookctl.cli calendar create \ --subject "Team Sync" \ --start "2025-01-20 10:00" \ --duration 60 \ --attendees "alice@example.com,bob@example.com" ``` -------------------------------- ### List Calendar Events Source: https://gmickel.github.io/outlookctl/cli.html List calendar events within a specified date range. Defaults to the next 7 days. Requires start date and number of days. ```bash uv run python -m outlookctl.cli calendar list \ --start "2025-01-20" \ --days 14 ``` -------------------------------- ### Get email by ID Source: https://gmickel.github.io/outlookctl/cli.html Get a single message by ID. Specify message and store IDs. Optionally include the full message body and headers. ```bash uv run python -m outlookctl.cli get \ --id "00000..." \ --store "00000..." \ --include-body ``` -------------------------------- ### Get outlookctl Version Information Source: https://gmickel.github.io/outlookctl/troubleshooting.html Retrieve the current version of outlookctl. This information is useful when reporting issues. ```bash uv run python -m outlookctl.cli --version ``` -------------------------------- ### Get Calendar Event Details Source: https://gmickel.github.io/outlookctl/cli.html Retrieves detailed information about a specific calendar event, including attendees and recurrence. Requires event ID and store ID. ```bash uv run python -m outlookctl.cli calendar get \ --id "00000..." \ --store "00000..." \ --include-body ``` -------------------------------- ### GetResult Response Schema (Message Detail) Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl get` command, returning full message details. `body` and `body_html` are included with `--include-body`, and `headers` are included with `--include-headers`. ```json { "version": "1.0", "id": { "entry_id": "00000000...", "store_id": "00000000..." }, "received_at": "2025-01-15T09:30:00", "subject": "Meeting Tomorrow", "from": { "name": "Jane Smith", "email": "jane@example.com" }, "to": ["you@example.com"], "cc": ["team@example.com"], "bcc": [], "unread": true, "has_attachments": true, "attachments": ["document.pdf", "image.png"], "body": "Full message body text...", "body_html": "...", "headers": { "Message-ID": "", "Date": "Wed, 15 Jan 2025 09:30:00 +0000" } } ``` -------------------------------- ### outlookctl get email Source: https://gmickel.github.io/outlookctl/cli.html Get a single message by ID. Returns full message details including body content when requested. ```APIDOC ## outlookctl get email ### Description Retrieves a single email message using its ID and store ID. ### Command `uv run python -m outlookctl.cli get [options]` ### Options - `--id` (string) - Required - Message entry ID - `--store` (string) - Required - Message store ID - `--include-body` (boolean) - Optional - Include full message body - `--include-headers` (boolean) - Optional - Include message headers - `--max-body-chars` (integer) - Optional - Limit body length ``` -------------------------------- ### Audit Log Entry Example Source: https://gmickel.github.io/outlookctl/security.html Audit logs record send operation details. By default, logs contain counts and lengths, not actual content. Use --log-body to include body content, though this is not recommended for sensitive data. ```json { "timestamp": "2025-01-15T10:00:00+00:00", "operation": "send", "success": true, "recipients": { "to_count": 1, "cc_count": 0, "bcc_count": 0 }, "subject_length": 25, "entry_id": "00000..." } ``` -------------------------------- ### Update Calendar Event Source: https://gmickel.github.io/outlookctl/cli.html Updates an existing calendar event. Only specified fields are modified. Requires event ID and store ID. Can update location, start time, duration, etc. ```bash uv run python -m outlookctl.cli calendar update \ --id "00000..." \ --store "00000..." \ --location "Room B" \ --start "2025-01-20 11:00" ``` -------------------------------- ### Create Email Draft with Details Source: https://gmickel.github.io/outlookctl/index.html Create an email draft specifying recipients, subject, and body text. The draft is saved to the Drafts folder. ```bash draft --to "team@company.com" ``` -------------------------------- ### List Folders with Standard Names Source: https://gmickel.github.io/outlookctl/troubleshooting.html Use the list command with standard folder names like 'inbox', 'sent', or 'drafts'. The folder name is case-insensitive. ```bash uv run python -m outlookctl.cli list --folder inbox ``` ```bash uv run python -m outlookctl.cli list --folder sent ``` ```bash uv run python -m outlookctl.cli list --folder drafts ``` -------------------------------- ### Run outlookctl command Source: https://gmickel.github.io/outlookctl/cli.html All commands follow this pattern. Ensure you have the necessary Python environment set up. ```bash uv run python -m outlookctl.cli [options] ``` -------------------------------- ### Send email Source: https://gmickel.github.io/outlookctl/cli.html Send a draft or new message. Requires explicit confirmation with `--confirm-send YES`. Recommended workflow is to create a draft first, review it, then send. ```bash uv run python -m outlookctl.cli send --confirm-send YES ``` -------------------------------- ### List Folders by Name or Path Source: https://gmickel.github.io/outlookctl/troubleshooting.html For custom folders, use the 'by-name' or 'by-path' options to specify the folder. This is useful for nested or uniquely named folders. ```bash # Search by name uv run python -m outlookctl.cli list --folder "by-name:Projects" ``` ```bash # Search by path uv run python -m outlookctl.cli list --folder "by-path:Inbox/Projects/2025" ``` -------------------------------- ### Create Email Draft with outlookctl Source: https://gmickel.github.io/outlookctl/index.html Create a draft email with specified recipients, subject, and body text. The draft is saved to the Drafts folder for review. ```bash outlookctl draft --to "team@company.com" ``` -------------------------------- ### Create Calendar Meeting Source: https://gmickel.github.io/outlookctl/index.html Create a new calendar meeting with a specified subject. Further details can be added interactively or via other commands. ```bash calendar create --subject "Sync" ``` -------------------------------- ### Respond to Calendar Invitation Source: https://gmickel.github.io/outlookctl/index.html Respond to a calendar invitation with a specified response (e.g., accept, decline, tentative). ```bash calendar respond --response accept ``` -------------------------------- ### List emails with options Source: https://gmickel.github.io/outlookctl/cli.html List messages from a folder, with options to control the count, filter by unread status, and include body snippets. ```bash uv run python -m outlookctl.cli list --count 10 --unread-only ``` -------------------------------- ### Send Existing Draft Source: https://gmickel.github.io/outlookctl/cli.html Use this command to send an email draft that has already been created. Ensure the draft ID and store ID are correctly specified. Confirmation is required. ```bash uv run python -m outlookctl.cli send \ --draft-id "00000..." \ --draft-store "00000..." \ --confirm-send YES ``` -------------------------------- ### Create email draft Source: https://gmickel.github.io/outlookctl/cli.html Create a draft message to be saved in the Drafts folder. Specify recipients, subject, body, and attachments. ```bash uv run python -m outlookctl.cli draft \ --to "recipient@example.com" \ --subject "Meeting Follow-up" \ --body-text "Thank you for the meeting." ``` -------------------------------- ### Global Options Source: https://gmickel.github.io/outlookctl/cli.html These options apply to all outlookctl commands. ```APIDOC ## Global Options ### Description Options that can be used with any outlookctl command. ### Options - `--output` (string) - Output format: `json` or `text` (default: json) - `--version` - Show version number and exit - `--help` - Show help message and exit ``` -------------------------------- ### Create Forward Draft Source: https://gmickel.github.io/outlookctl/cli.html Create a draft for forwarding an existing message. The forward draft is saved for review before sending. Specify the original message ID, store ID, and recipients. ```bash uv run python -m outlookctl.cli forward \ --id "00000..." \ --store "00000..." \ --to "colleague@example.com" \ --message "FYI - see below" ``` -------------------------------- ### Respond to Meeting Invitation Source: https://gmickel.github.io/outlookctl/cli.html Responds to a meeting invitation with accept, decline, or tentative. Use --no-response to avoid sending the response to the organizer. Requires event ID and store ID. ```bash uv run python -m outlookctl.cli calendar respond \ --id "00000..." \ --store "00000..." \ --response accept ``` -------------------------------- ### List Calendars Source: https://gmickel.github.io/outlookctl/cli.html Lists all available calendars across all accounts. ```APIDOC ## List Calendars ### Description Lists all available calendars, including subscribed, shared, and internet calendars. ### Method `uv run python -m outlookctl.cli calendar calendars` ### Parameters #### Path Parameters None #### Query Parameters None ### Output Fields * `name` (string) - Calendar display name. * `path` (string) - Full path of the calendar in the folder hierarchy. * `store` (string) - The account or store containing the calendar. ``` -------------------------------- ### List All Calendars Source: https://gmickel.github.io/outlookctl/cli.html List all available calendars across all accounts, including subscribed and shared calendars. This command helps discover calendar names for use in other calendar-related commands. ```bash uv run python -m outlookctl.cli calendar calendars ``` -------------------------------- ### outlookctl doctor Source: https://gmickel.github.io/outlookctl/cli.html Validates environment and prerequisites. Run this first to ensure everything is set up correctly. ```APIDOC ## outlookctl doctor ### Description Validates environment and prerequisites. Run this first to ensure everything is set up correctly. ### Command `uv run python -m outlookctl.cli doctor` ### Checks Performed - ✓ Windows OS detection - ✓ pywin32 installation - ✓ Outlook COM availability - ✓ Outlook executable location ``` -------------------------------- ### Send Meeting Invitations Source: https://gmickel.github.io/outlookctl/cli.html Sends meeting invitations. Requires explicit confirmation using --confirm-send YES. Specify event ID and store ID. ```bash uv run python -m outlookctl.cli calendar send \ --id "00000..." \ --store "00000..." \ --confirm-send YES ``` -------------------------------- ### List Calendar Events by Days Source: https://gmickel.github.io/outlookctl/index.html View upcoming calendar events for a specified number of days. Useful for scheduling and planning. ```bash calendar list --days 14 ``` -------------------------------- ### List Calendar Events Source: https://gmickel.github.io/outlookctl/cli.html Lists calendar events within a specified date range. Use --calendar to specify a calendar name or email for a shared calendar. ```bash uv run python -m outlookctl.cli calendar list \ --calendar "Family" \ --days 7 ``` -------------------------------- ### ErrorResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html All commands return this format on error. Includes remediation hints when available. ```json { "version": "1.0", "success": false, "error": "Description of what went wrong", "error_code": "OUTLOOK_UNAVAILABLE", "remediation": "Start Classic Outlook and try again." } ``` -------------------------------- ### Send Calendar Invitation with Confirmation Source: https://gmickel.github.io/outlookctl/index.html Send a calendar invitation after explicit confirmation. This is part of the draft-first workflow to prevent accidental sends. ```bash calendar send --confirm-send YES ``` -------------------------------- ### Forward Email Source: https://gmickel.github.io/outlookctl/cli.html Creates a draft for forwarding an email message. ```APIDOC ## Forward Email ### Description Creates a draft for forwarding an email. The draft is saved for review before sending. ### Method `uv run python -m outlookctl.cli forward` ### Parameters #### Path Parameters None #### Query Parameters * `--id` (string) - Required - The ID of the original message to forward. * `--store` (string) - Required - The store ID of the original message. * `--to` (string) - Required - Comma-separated list of To recipients. * `--cc` (string) - Optional - Comma-separated list of CC recipients. * `--bcc` (string) - Optional - Comma-separated list of BCC recipients. * `--message` (string) - Optional - Additional text to prepend to the forwarded message. ``` -------------------------------- ### List Upcoming Calendar Events with outlookctl Source: https://gmickel.github.io/outlookctl/index.html View upcoming calendar events for a specified number of days. Helps in planning your schedule. ```bash outlookctl calendar list --days 7 ``` -------------------------------- ### Confirm Sending a Draft Message Source: https://gmickel.github.io/outlookctl/troubleshooting.html Explicitly confirm sending a draft message by providing the draft ID, store ID, and setting '--confirm-send' to 'YES'. ```bash # For sending a draft uv run python -m outlookctl.cli send \ --draft-id "..." \ --draft-store "..." \ --confirm-send YES ``` -------------------------------- ### Send New Message Directly with Confirmation Source: https://gmickel.github.io/outlookctl/troubleshooting.html Send a new message directly, but not recommended. Requires specifying recipient, subject, body, and explicit confirmation using '--unsafe-send-new' and '--confirm-send YES'. ```bash # For sending new message directly (not recommended) uv run python -m outlookctl.cli send \ --to "recipient@example.com" \ --subject "Subject" \ --body-text "Body" \ --unsafe-send-new \ --confirm-send YES ``` -------------------------------- ### Send Command Confirmation Source: https://gmickel.github.io/outlookctl/security.html The 'send' command requires explicit confirmation. Sending a new message without a draft requires additional, intentionally cumbersome flags (--unsafe-send-new and --confirm-send YES) to discourage bypassing the draft workflow. ```bash # This will FAIL uv run python -m outlookctl.cli send \ --draft-id "..." --draft-store "..." # This will SUCCEED uv run python -m outlookctl.cli send \ --draft-id "..." --draft-store "..." \ --confirm-send YES ``` ```bash # Requires BOTH flags - intentionally cumbersome uv run python -m outlookctl.cli send \ --to "recipient@example.com" \ --subject "Subject" \ --body-text "Body" \ --unsafe-send-new \ --confirm-send YES ``` -------------------------------- ### Set UTF-8 Encoding for Terminal Output Source: https://gmickel.github.io/outlookctl/troubleshooting.html Ensure your terminal supports UTF-8 and set the PYTHONIOENCODING environment variable to 'utf-8' to prevent garbled characters and encoding errors. ```powershell $env:PYTHONIOENCODING = "utf-8" ``` -------------------------------- ### Save Email Attachments Source: https://gmickel.github.io/outlookctl/cli.html Save attachments from a message to a specified directory. The command will create the destination directory if it does not exist. Requires message ID, store ID, and destination path. ```bash uv run python -m outlookctl.cli attachments save \ --id "00000..." \ --store "00000..." \ --dest "./downloads" ``` -------------------------------- ### Send Existing Draft Source: https://gmickel.github.io/outlookctl/cli.html Sends an existing draft email. Requires confirmation to proceed. ```APIDOC ## Send Existing Draft ### Description Sends an existing draft email using its ID and store. Confirmation is required. ### Method `uv run python -m outlookctl.cli send` ### Parameters #### Path Parameters None #### Query Parameters * `--draft-id` (string) - Required - The ID of the draft to send. * `--draft-store` (string) - Required - The store ID of the draft. * `--confirm-send` (string) - Optional - Must be exactly "YES" to confirm sending. * `--confirm-send-file` (string) - Optional - Path to a file containing "YES" for confirmation. * `--unsafe-send-new` (boolean) - Optional - Required for sending new messages directly. * `--log-body` (boolean) - Optional - Include the email body in the audit log. ``` -------------------------------- ### ListResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl list` command, returning message summaries from a folder. The `body_snippet` field is only included when `--include-body-snippet` is used. Items are sorted by received time, newest first. ```json { "version": "1.0", "folder": { "name": "Inbox", "path": null, "store_id": null }, "items": [ { "id": { "entry_id": "00000000...", "store_id": "00000000..." }, "received_at": "2025-01-15T09:30:00", "subject": "Meeting Tomorrow", "from": { "name": "Jane Smith", "email": "jane@example.com" }, "to": ["you@example.com"], "cc": [], "unread": true, "has_attachments": false, "body_snippet": "Hi, just wanted to confirm..." } ] } ``` -------------------------------- ### List Calendar Events Source: https://gmickel.github.io/outlookctl/cli.html Lists calendar events within a specified date range. ```APIDOC ## List Calendar Events ### Description Lists calendar events within a specified date range. Defaults to the next 7 days. ### Method `uv run python -m outlookctl.cli calendar list` ### Parameters #### Path Parameters None #### Query Parameters * `--start` (string) - Optional - The start date for the event listing (YYYY-MM-DD). * `--days` (integer) - Optional - The number of days to list events for. ``` -------------------------------- ### EmailAddress Object Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Represents a sender or recipient with display name and email address. ```json { "name": "John Doe", "email": "john.doe@example.com" } ``` -------------------------------- ### Save Email Attachments Source: https://gmickel.github.io/outlookctl/index.html Save attachments from an email to a specified destination directory. Ensure the destination path is valid. ```bash attachments save --dest ./files ``` -------------------------------- ### Search emails with filters Source: https://gmickel.github.io/outlookctl/cli.html Search messages using various criteria like sender, attachments, and date ranges. Combines multiple criteria with AND logic. ```bash uv run python -m outlookctl.cli search \ --from "boss@company.com" \ --has-attachments \ --since 2025-01-01 ``` -------------------------------- ### SearchResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl search` command. Includes the query parameters used. The structure of `items` is the same as in `ListResult`. ```json { "version": "1.0", "query": { "from": "boss@company.com", "since": "2025-01-01T00:00:00", "unread_only": true }, "items": [ // Same structure as list items ] } ``` -------------------------------- ### List Messages with outlookctl Source: https://gmickel.github.io/outlookctl/index.html List a specified number of messages from your Outlook inbox. Useful for quickly checking recent communications. ```bash outlookctl list --count 3 ``` -------------------------------- ### DraftResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl draft` command, returning the created draft's ID for later reference. ```json { "version": "1.0", "success": true, "id": { "entry_id": "00000000...", "store_id": "00000000..." }, "saved_to": "Drafts", "subject": "Re: Meeting", "to": ["recipient@example.com"], "cc": [], "attachments": ["./report.pdf"] } ``` -------------------------------- ### outlookctl draft email Source: https://gmickel.github.io/outlookctl/cli.html Create a draft message. The draft is saved to the Drafts folder and can be reviewed before sending. ```APIDOC ## outlookctl draft email ### Description Creates a new email draft in the Drafts folder. ### Command `uv run python -m outlookctl.cli draft [options]` ### Options - `--to` (string) - To recipients (comma-separated) - `--cc` (string) - CC recipients (comma-separated) - `--bcc` (string) - BCC recipients (comma-separated) - `--subject` (string) - Email subject - `--body-text` (string) - Plain text body - `--body-html` (string) - HTML body - `--attach` (string) - File path to attach (repeatable) - `--reply-to-id` (string) - Entry ID of message to reply to - `--reply-to-store` (string) - Store ID of message to reply to - `--reply-all` (boolean) - Reply-all instead of reply ``` -------------------------------- ### SendResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl send` command, confirming the message was sent. ```json { "version": "1.0", "success": true, "message": "Draft sent successfully", "sent_at": "2025-01-15T10:00:00", "to": ["recipient@example.com"], "subject": "Re: Meeting" } ``` -------------------------------- ### Call outlookctl from WSL via PowerShell Source: https://gmickel.github.io/outlookctl/troubleshooting.html When using WSL, COM automation requires a Windows-native Python. Call outlookctl through PowerShell to ensure it runs in the correct environment. ```powershell powershell.exe -c "uv run python -m outlookctl.cli ..." ``` -------------------------------- ### outlookctl list email Source: https://gmickel.github.io/outlookctl/cli.html List messages from a folder. Returns message summaries including subject, sender, date, and read status. ```APIDOC ## outlookctl list email ### Description Lists messages from a specified folder, returning summaries. ### Command `uv run python -m outlookctl.cli list [options]` ### Options - `--folder` (string) - Folder to list from (default: inbox) - `--count` (integer) - Number of messages to return (default: 10) - `--unread-only` (boolean) - Only return unread messages (default: false) - `--since` (string) - ISO date filter (messages after) - `--until` (string) - ISO date filter (messages before) - `--include-body-snippet` (boolean) - Include body preview (default: false) - `--body-snippet-chars` (integer) - Max characters for snippet (default: 200) ### Folder Specifications - `inbox`: Default inbox - `sent`: Sent items - `drafts`: Drafts folder - `deleted`: Deleted items - `outbox`: Outbox - `junk`: Junk/spam - Custom folders: `by-name:FolderName` or `by-path:Inbox/Subfolder` ``` -------------------------------- ### MessageId Object Schema Source: https://gmickel.github.io/outlookctl/json-schema.html A stable identifier for referencing messages across commands. Both fields are required when referencing a message. ```json { "entry_id": "00000000...", "store_id": "00000000..." } ``` -------------------------------- ### outlookctl send email Source: https://gmickel.github.io/outlookctl/cli.html Send a draft or new message. Requires explicit confirmation. ```APIDOC ## outlookctl send email ### Description Sends an email message. Requires explicit confirmation for safety. ### Command `uv run python -m outlookctl.cli send [options]` ### Safety Sending requires `--confirm-send YES`. The recommended workflow is to create a draft first, review it, then send. ``` -------------------------------- ### Mark Email as Read or Unread Source: https://gmickel.github.io/outlookctl/cli.html Mark a message as read or unread. Specify the message ID and store ID. Use the --unread flag to mark as unread. ```bash uv run python -m outlookctl.cli mark-read --id "..." --store "..." ``` ```bash uv run python -m outlookctl.cli mark-read --id "..." --store "..." --unread ``` -------------------------------- ### AttachmentSaveResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl attachments save` command. ```json { "version": "1.0", "success": true, "saved_files": [ "C:\\Users\\user\\downloads\\document.pdf", "C:\\Users\\user\\downloads\\image.png" ], "errors": [] } ``` -------------------------------- ### Move Email to Another Folder Source: https://gmickel.github.io/outlookctl/cli.html Move a message to a different folder. This command requires the message ID, store ID, and the destination folder path. The destination can be specified by name. ```bash uv run python -m outlookctl.cli move \ --id "00000..." \ --store "00000..." \ --dest "by-name:Archive" ``` -------------------------------- ### Save Attachments Source: https://gmickel.github.io/outlookctl/cli.html Saves attachments from a message to a specified directory. ```APIDOC ## Save Attachments ### Description Saves attachments from a message to a specified directory. The destination directory will be created if it does not exist. ### Method `uv run python -m outlookctl.cli attachments save` ### Parameters #### Path Parameters None #### Query Parameters * `--id` (string) - Required - The ID of the message containing the attachments. * `--store` (string) - Required - The store ID of the message. * `--dest` (string) - Required - The destination directory to save the attachments. ``` -------------------------------- ### Move Email Source: https://gmickel.github.io/outlookctl/cli.html Moves an email message to a specified folder. Returns the new message ID. ```APIDOC ## Move Email ### Description Moves a message to another folder and returns its new ID. ### Method `uv run python -m outlookctl.cli move` ### Parameters #### Path Parameters None #### Query Parameters * `--id` (string) - Required - The ID of the message to move. * `--store` (string) - Required - The store ID of the message. * `--dest` (string) - Required - The destination folder (e.g., "by-name:Archive"). ``` -------------------------------- ### Search Emails by Sender Source: https://gmickel.github.io/outlookctl/index.html Search for emails from a specific sender. Helps in finding relevant conversations. ```bash search --from "boss@company.com" ``` -------------------------------- ### DoctorResult Response Schema Source: https://gmickel.github.io/outlookctl/json-schema.html Output of the `outlookctl doctor` command, reporting environment check results. Includes the path to the Outlook executable. ```json { "version": "1.0", "all_passed": true, "checks": [ { "name": "windows_os", "passed": true, "message": "Windows OS detected", "remediation": null }, { "name": "pywin32", "passed": true, "message": "pywin32 is installed and importable", "remediation": null }, { "name": "outlook_com", "passed": true, "message": "Outlook COM automation is available", "remediation": null }, { "name": "outlook_exe", "passed": true, "message": "Outlook executable found: C:\\...\\OUTLOOK.EXE", "remediation": null } ], "outlook_path": "C:\\Program Files\\Microsoft Office\\root\\Office16\\OUTLOOK.EXE" } ``` -------------------------------- ### Mark Email Read/Unread Source: https://gmickel.github.io/outlookctl/cli.html Marks a message as read or unread. ```APIDOC ## Mark Email Read/Unread ### Description Marks a message as read or unread. ### Method `uv run python -m outlookctl.cli mark-read` ### Parameters #### Path Parameters None #### Query Parameters * `--id` (string) - Required - The ID of the message to mark. * `--store` (string) - Required - The store ID of the message. * `--unread` (boolean) - Optional - Mark the message as unread instead of read. ``` -------------------------------- ### Delete Email Source: https://gmickel.github.io/outlookctl/cli.html Delete a message. By default, messages are moved to the Deleted Items folder. Use the --permanent flag to bypass the trash and delete permanently. ```bash uv run python -m outlookctl.cli delete \ --id "00000..." \ --store "00000..." ``` ```bash uv run python -m outlookctl.cli delete \ --id "00000..." \ --store "00000..." \ --permanent ``` -------------------------------- ### Delete Calendar Event Source: https://gmickel.github.io/outlookctl/cli.html Deletes a calendar event. For meetings organized by you, a cancellation is sent to attendees by default. Use --no-cancel to prevent sending cancellation. Requires event ID and store ID. ```bash uv run python -m outlookctl.cli calendar delete \ --id "00000..." \ --store "00000..." ``` -------------------------------- ### List Unread Emails Source: https://gmickel.github.io/outlookctl/index.html List only the unread emails in your Outlook inbox. Useful for prioritizing communication. ```bash list --count 10 --unread-only ``` -------------------------------- ### Delete Email Source: https://gmickel.github.io/outlookctl/cli.html Deletes a message. By default, it moves to the Deleted Items folder. ```APIDOC ## Delete Email ### Description Deletes a message. By default, it moves to the Deleted Items folder unless `--permanent` is specified. ### Method `uv run python -m outlookctl.cli delete` ### Parameters #### Path Parameters None #### Query Parameters * `--id` (string) - Required - The ID of the message to delete. * `--store` (string) - Required - The store ID of the message. * `--permanent` (boolean) - Optional - Permanently delete the message, bypassing the trash. ``` -------------------------------- ### outlookctl search email Source: https://gmickel.github.io/outlookctl/cli.html Search messages with various filters. Combines multiple criteria with AND logic. ```APIDOC ## outlookctl search email ### Description Searches for email messages based on a variety of criteria. ### Command `uv run python -m outlookctl.cli search [options]` ### Options - `--folder` (string) - Folder to search (default: inbox) - `--query` (string) - Free text search (subject/body) - `--from` (string) - Filter by sender - `--to` (string) - Filter by To recipient - `--cc` (string) - Filter by CC recipient - `--subject-contains` (string) - Filter by subject text - `--unread-only` (boolean) - Only unread messages (default: false) - `--has-attachments` (boolean) - Only with attachments (default: false) - `--no-attachments` (boolean) - Only without attachments (default: false) - `--since` (string) - ISO date filter (after) - `--until` (string) - ISO date filter (before) - `--count` (integer) - Maximum results (default: 50) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.