email-imap-full-fetch

安装量: 35
排名: #19735

安装

npx skills add https://github.com/tiangong-ai/skills --skill email-imap-full-fetch
Email IMAP Full Fetch
Core Goal
Fetch one target email by stable message reference from IMAP.
Enforce lookup order:
HEADER Message-Id
exact match first, then
uid
fallback.
Download full raw MIME via
BODY.PEEK[]
.
Parse and return headers, full text body, html body, and attachment metadata.
Save
.eml
and attachment files to disk with filename safety and idempotent indexing.
Standard Flow
Input must include
message_id_norm
from stage-1 routing output (
mail_ref.message_id_norm
).
Use
fetch --message-id ""
as the default path.
Use
fetch --uid ""
only when no usable message-id is available.
Keep mailbox selection consistent with stage-1 (
--mailbox
or
IMAP_MAILBOX
).
Read JSON output and continue downstream processing with returned
mail_ref
.
Commands
Fetch by Message-Id (preferred):
python3 scripts/imap_full_fetch.py fetch --message-id
"caa123@example.com"
Fetch by UID (fallback only):
python3 scripts/imap_full_fetch.py fetch
--uid
"123456"
Use both when needed (message-id lookup first, uid fallback second):
python3 scripts/imap_full_fetch.py fetch --message-id
"caa123@example.com"
--uid
"123456"
Output Contract
Output is a single JSON object.
Required top-level fields:
mail_ref
headers
text_plain
text_html
attachments
saved_eml_path
mail_ref
contains:
account
,
mailbox
,
uid
,
message_id_raw
,
message_id_norm
,
date
attachments[]
contains per-file metadata and persistence result:
filename
,
content_type
,
bytes
,
disposition
,
saved_path
,
skipped_reason
Storage And Idempotency
saved_eml_path
points to local
.eml
file saved from
BODY.PEEK[]
.
Attachments are saved without returning attachment binary content in JSON.
Filenames are sanitized to remove path separators and unsafe characters.
Duplicate attachment names are deduped with content-hash suffix.
Repeated requests are idempotent by
message_id_norm
index and return existing persisted JSON record directly.
Parameters
--message-id
primary lookup key.
--uid
fallback lookup key.
--mailbox
mailbox to query (default
IMAP_MAILBOX
or
INBOX
).
--save-eml-dir
target dir for
.eml
files (env
IMAP_FULL_SAVE_EML_DIR
).
--index-dir
target dir for idempotency index JSON files (env
IMAP_FULL_INDEX_DIR
, default
/.index
).
--save-attachments-dir
target dir for attachments (env
IMAP_FULL_SAVE_ATTACHMENTS_DIR
).
--max-attachment-bytes
max saved attachment size (env
IMAP_FULL_MAX_ATTACHMENT_BYTES
).
--allow-ext
allowed attachment extensions, comma-separated (env
IMAP_FULL_ALLOW_EXT
).
--connect-timeout
IMAP connect timeout seconds (default from IMAP_CONNECT_TIMEOUT ). Required Environment IMAP_HOST IMAP_USERNAME IMAP_PASSWORD Optional account defaults: IMAP_NAME IMAP_PORT IMAP_SSL IMAP_MAILBOX Scripts scripts/imap_full_fetch.py
返回排行榜