用途:该技能用于从 IMAP 邮箱按稳定消息引用抓取单封目标邮件的完整 MIME 内容,适合下游已持有阶段一 mail_ref(mail_ref.message_id_norm)并需要完整邮件正文与附件的场景。
主要能力:查找顺序为先按 HEADER Message-Id 精确匹配,再用 uid 兜底;通过 BODY.PEEK[] 下载完整原始 MIME;解析并返回 headers、text_plain、text_html 与附件元数据;将 .eml 和附件文件保存到磁盘,文件名做安全处理,附件重名以内容哈希后缀去重,重复请求按 message_id_norm 索引幂等,直接返回已有持久化记录。
使用方式:默认优先按 Message-Id 抓取:python3 scripts/imap_full_fetch.py fetch --message-id "caa123@example.com"。仅在无可用 message-id 时用 UID 兜底:python3 scripts/imap_full_fetch.py fetch --uid "123456"。也可同时传入两者,先按 message-id 查找、失败再按 uid 兜底。邮箱选择需与阶段一一致(--mailbox 或 IMAP_MAILBOX)。脚本为 scripts/imap_full_fetch.py。
输出契约:输出单个 JSON 对象,顶层字段包含 mail_ref、headers、text_plain、text_html、attachments、saved_eml_path。mail_ref 含 account、mailbox、uid、message_id_raw、message_id_norm、date;attachments[] 每项含 filename、content_type、bytes、disposition、saved_path、skipped_reason。附件二进制内容不回传 JSON。
参数与限制:参数包括 --message-id、--uid、--mailbox、--save-eml-dir、--index-dir、--save-attachments-dir、--max-attachment-bytes、--allow-ext、--connect-timeout,对应可用的环境变量。必需环境变量为 IMAP_HOST、IMAP_USERNAME、IMAP_PASSWORD,可选账户默认含 IMAP_NAME、IMAP_PORT、IMAP_SSL、IMAP_MAILBOX。资料未提供收费、价格、平台兼容性与效果说明。