Email management via omail CLI — send, reply, forward, redirect, triage inbox, read messages, search, move, flag, draft, watch for new mail, and raw JMAP mail methods. Use when the user asks to read, send, search, organize, or manage email.
Works only with the OfficeMail service. Not compatible with other email providers.
$ARGUMENTS = send → skip to Send & reply section$ARGUMENTS = triage → skip to Read & triage section$ARGUMENTS = search → skip to Search by date range recipe$ARGUMENTS = read → skip to Read & triage section$ARGUMENTS = reply → skip to Send & reply section$ARGUMENTS = forward → skip to Send & reply section$ARGUMENTS = → skip to sectionmove$ARGUMENTS = flag → skip to Draft, organize, watch section$ARGUMENTS = draft → skip to Draft, organize, watch section$ARGUMENTS = watch → skip to Draft, organize, watch section${CLAUDE_PLUGIN_DATA}/omail
| Command | Description |
|---|---|
+send | Send an email (-a for attachments, --cc, --bcc, --html, --from) |
+reply | Reply with auto-threading (-a for attachments) |
+reply-all | Reply-all (-a for attachments) |
+forward | Forward (-a, --include-attachments, --raw) |
+redirect | Redirect (bounce) preserving original headers |
+triage | Unread inbox summary (--mailbox, --limit, --page-all) |
+read | Read message body (--raw, --save-attachments [dir]) |
+search | Full-text search (--query, --after, --before, --mailbox, --limit, --page-all) |
+move | Move between mailboxes |
+flag | Set/unset keywords |
+draft | Save to Drafts (--cc, --html) |
+watch | Watch for new emails via EventSource (--raw, --ping) |
${CLAUDE_PLUGIN_DATA}/omail mail +triage # unread INBOX summary
${CLAUDE_PLUGIN_DATA}/omail mail +triage --mailbox Sent # sent mail summary
${CLAUDE_PLUGIN_DATA}/omail mail +triage --limit 10 # top 10
${CLAUDE_PLUGIN_DATA}/omail mail +triage --page-all # all unread
${CLAUDE_PLUGIN_DATA}/omail mail +read --message-id <id> # full message body
${CLAUDE_PLUGIN_DATA}/omail mail +read --message-id <id> --save-attachments # download to cwd
${CLAUDE_PLUGIN_DATA}/omail mail +read --message-id <id> --save-attachments /tmp # download to dir
${CLAUDE_PLUGIN_DATA}/omail mail +search --query "from:bob budget" --limit 20
${CLAUDE_PLUGIN_DATA}/omail mail +search --query "report" --page-all
${CLAUDE_PLUGIN_DATA}/omail mail +send --to [email protected] --subject "Hello" --body "Hi"
${CLAUDE_PLUGIN_DATA}/omail mail +send --to [email protected] --subject "Report" --body "See attached" -a report.pdf
${CLAUDE_PLUGIN_DATA}/omail mail +send --to [email protected] --subject "Bold" --body '<b>Bold</b>' --html
${CLAUDE_PLUGIN_DATA}/omail mail +send --to [email protected] --subject "Test" --body "Hi" --from [email protected]
${CLAUDE_PLUGIN_DATA}/omail mail +reply --message-id <id> --body "Thanks!"
${CLAUDE_PLUGIN_DATA}/omail mail +reply --message-id <id> --body "See attached" -a notes.pdf
${CLAUDE_PLUGIN_DATA}/omail mail +reply-all --message-id <id> --body "Noted."
${CLAUDE_PLUGIN_DATA}/omail mail +reply-all --message-id <id> --body "Noted." -a summary.pdf
${CLAUDE_PLUGIN_DATA}/omail mail +forward --message-id <id> --to [email protected] --body "FYI"
${CLAUDE_PLUGIN_DATA}/omail mail +forward --message-id <id> --to [email protected] --include-attachments
${CLAUDE_PLUGIN_DATA}/omail mail +forward --message-id <id> --to [email protected] -a extra.pdf --include-attachments
${CLAUDE_PLUGIN_DATA}/omail mail +forward --message-id <id> --to [email protected] --raw
${CLAUDE_PLUGIN_DATA}/omail mail +redirect --message-id <id> --to [email protected]
${CLAUDE_PLUGIN_DATA}/omail mail +redirect --message-id <id> --to [email protected] [email protected]
${CLAUDE_PLUGIN_DATA}/omail mail +draft --to [email protected] --subject "Draft" --body "WIP"
${CLAUDE_PLUGIN_DATA}/omail mail +move --message-id <id> --to Archive
${CLAUDE_PLUGIN_DATA}/omail mail +flag --message-id <id> --set '$flagged'
${CLAUDE_PLUGIN_DATA}/omail mail +flag --message-id <id> --unset '$seen'
${CLAUDE_PLUGIN_DATA}/omail mail +watch # enriched new email stream
${CLAUDE_PLUGIN_DATA}/omail mail +watch --raw # raw SSE events
${CLAUDE_PLUGIN_DATA}/omail mail +watch --ping 30 # custom ping interval
| Flag | Required | Description |
|---|---|---|
--to | Yes | Recipient email(s) |
--subject | Yes | Subject line |
--body | Yes | Message body (plain text or HTML) |
--cc | No | CC recipients |
--bcc | No | BCC recipients |
--from | No | Send-as alias |
--html | No | Treat body as HTML |
-a, --attach | No | File attachment (repeatable, max 25MB total) |
--dry-run | No | Preview without sending |
| Flag | Required | Default | Description |
|---|---|---|---|
--mailbox | No | INBOX | Mailbox name or role |
--limit | No | 50 | Max results per page |
--page-all | No | false | Fetch all pages |
{
"mailbox": "INBOX",
"totalEmails": 142,
"unreadEmails": 5,
"showing": 5,
"total": 5,
"pageAll": false,
"messages": [
{
"id": "msg001",
"from": "[email protected]",
"subject": "Budget Q2",
"receivedAt": "2026-03-20T09:00:00Z",
"preview": "Hi, please review...",
"hasAttachment": true,
"isRead": false,
"isFlagged": false
}
]
}
${CLAUDE_PLUGIN_DATA}/omail mail +triage — get unread summaryid field${CLAUDE_PLUGIN_DATA}/omail mail +read --message-id <id> — read full message${CLAUDE_PLUGIN_DATA}/omail mail +reply --message-id <id> --body "..." --dry-run
— preview${CLAUDE_PLUGIN_DATA}/omail mail +reply --message-id <id> --body "..."
— send after confirmWhen the user says "reply to this email" without specifying which one:
${CLAUDE_PLUGIN_DATA}/omail mail +read --message-id <id> — confirm content${CLAUDE_PLUGIN_DATA}/omail mail +reply --message-id <id> --body "..." --dry-run+forward — creates a new email with Fwd: subject and From: you+forward --raw — same as forward but without the separator header+redirect — bounces original as-is with Resent-* headers,
original From preserved${CLAUDE_PLUGIN_DATA}/omail mail +search --query "report" --after "2026-03-18" --before "2026-03-25"
${CLAUDE_PLUGIN_DATA}/omail mail +search --after "2026-03-25" --limit 10
${CLAUDE_PLUGIN_DATA}/omail mail +draft --to <email> --subject "..." --body "..."
— save to Drafts${CLAUDE_PLUGIN_DATA}/omail mail mailbox get --params '{...}'
${CLAUDE_PLUGIN_DATA}/omail mail mailbox query --params '{...}'
${CLAUDE_PLUGIN_DATA}/omail mail mailbox set --json '{"create":{"m1":{"name":"Archive"}}}'
${CLAUDE_PLUGIN_DATA}/omail mail email get --params '{"ids":["<id>"],"properties":["subject","from","bodyValues"]}'
${CLAUDE_PLUGIN_DATA}/omail mail email query --params '{"filter":{"inMailbox":"INBOX"}}'
${CLAUDE_PLUGIN_DATA}/omail mail email set --json '{"update":{"<id>":{"mailboxIds":{"<mailboxId>":true}}}}'
${CLAUDE_PLUGIN_DATA}/omail mail thread get --params '{"ids":["<id>"]}'
urn:ietf:params:jmap:submission