Compose
Core model
mxr writes drafts in your editor. The daemon handles parsing, validation, send, save-draft, and provider delivery.
This applies to:
- New compose
- Reply
- Reply-all
- Forward
- Draft editing
CLI
mxr composemxr compose --to alice@example.com --subject "hello"mxr reply MESSAGE_IDmxr reply-all MESSAGE_IDmxr forward MESSAGE_ID --to team@example.commxr draftsmxr send DRAFT_IDTUI
c: composer: replya: reply allf: forward
If you start from a thread view, reply actions target the focused message, not the latest message in the thread.
Draft format
Drafts use YAML frontmatter plus body text:
---to: - alice@example.comcc: []bcc: []subject: Example---
Hello from mxr.Reply context
Reply and forward drafts include message context. If the original message only had HTML, mxr uses the rendered reader output, not raw HTML tags.
Send confirmation
After the editor closes, mxr shows a confirmation modal:
- Changed draft: send, save draft, edit again, discard
- Unchanged draft: edit again or discard
Account selection
The sender address comes from the selected/default runtime account, not from a static status snapshot. This matters for multi-account setups.
Attachments
CLI compose supports:
mxr compose --attach ./invoice.pdf --attach ./notes.txtTUI message viewing supports attachment open/download. Compose-side attachment management is through the editor and CLI.