email-imap-append
SKILL.md
Email IMAP Append
Core Goal
- Build RFC 5322 draft messages with subject/body/recipients.
- Attach local files into draft MIME payload when requested.
- Append the draft MIME into an IMAP mailbox using
APPEND. - Set draft flags (default
\\Draft) and keep the message unsent. - Return machine-readable JSON with append status and server response metadata.
Workflow
- Configure IMAP env vars (see
references/env.mdandassets/config.example.env). - Validate config and defaults:
python3 scripts/imap_append.py check-config
- Append one draft email to Drafts mailbox:
python3 scripts/imap_append.py append-draft \
--to reviewer@example.com \
--subject "Draft: quarterly update" \
--body "Please review this draft before sending."
- Append HTML draft with explicit mailbox and flags:
python3 scripts/imap_append.py append-draft \
--mailbox "Drafts" \
--flags "\\Draft,\\Seen" \
--content-type html \
--subject "Draft: release note" \
--body "<p>Release note draft for approval.</p>"
- Append draft with attachments:
python3 scripts/imap_append.py append-draft \
--to reviewer@example.com \
--subject "Draft: WG2 package" \
--body "See attached draft tables." \
--attach ./wg2-table.xlsx \
--attach ./notes.docx
Output Contract
check-configprints sanitized IMAP + append defaults as JSON.append-draftsuccess prints onetype=statusJSON object containing:event=imap_draft_appendedaccount,mailbox,subject,message_id- recipient lists and counts
flagsattachment_countandattachments[]metadataappend_uidvalidityandappend_uidwhen server returnsAPPENDUID
append-draftfailure printstype=errorJSON to stderr withevent=imap_append_failed.
Parameters
append-draft --to: optional recipient, repeatable or comma-separated.append-draft --cc: optional CC recipient list.append-draft --bcc: optional BCC recipient list.append-draft --subject: optional subject (defaults from env).append-draft --body: optional body (defaults from env).append-draft --content-type:plainorhtml.append-draft --from: optional sender override.append-draft --mailbox: target mailbox (defaultIMAP_APPEND_MAILBOX, thenIMAP_MAILBOX, thenDrafts).append-draft --flags: append flags, comma-separated (default\\Draft).append-draft --message-id: explicit Message-ID header.append-draft --in-reply-to: optional In-Reply-To header.append-draft --references: optional References header.append-draft --attach: local attachment path, repeatable or comma-separated.append-draft --max-attachment-bytes: max bytes allowed per attachment.
Required Environment
IMAP_HOSTIMAP_USERNAMEIMAP_PASSWORD
Optional defaults:
IMAP_NAMEIMAP_PORTIMAP_SSLIMAP_CONNECT_TIMEOUTIMAP_MAILBOXIMAP_APPEND_MAILBOXIMAP_APPEND_FLAGSIMAP_APPEND_FROMIMAP_APPEND_TOIMAP_APPEND_CCIMAP_APPEND_BCCIMAP_APPEND_SUBJECTIMAP_APPEND_BODYIMAP_APPEND_CONTENT_TYPEIMAP_APPEND_MAX_ATTACHMENT_BYTES
References
references/env.md
Assets
assets/config.example.env
Scripts
scripts/imap_append.py
Weekly Installs
23
Repository
tiangong-ai/skillsGitHub Stars
4
First Seen
14 days ago
Security Audits
Installed on
openclaw22
github-copilot21
codex21
cline21
opencode21
gemini-cli20