SKILL.md
readonlyread-only
name
email-smtp-send
description
透過 SMTP 發送電子郵件,可附加本地檔案,並可選擇透過 IMAP APPEND 同步至寄件備份信箱。適用於需要可靠外寄郵件傳遞、附加檔案、SMTP 連線檢查,或跨用戶端寄件備份可見性(例如 SMTP 發送後附加至「寄件備份」)的情境。
Email SMTP Send
核心目標
- 使用環境變數設定的憑證,透過 SMTP 發送外寄郵件。
- 依需求將本地檔案附加至 MIME 郵件內容。
- 可選擇將已發送郵件附加至 IMAP 寄件備份信箱,以實現跨用戶端可見性。
- 在發送前驗證 SMTP 與寄件同步設定。
- 回傳機器可讀的 JSON 狀態/錯誤輸出。
工作流程
- 設定 SMTP 環境變數(請參閱
references/env.md與assets/config.example.env)。 - 選用:若啟用同步功能,請設定 IMAP 寄件同步環境變數並安裝
imapclient。 - 驗證設定:
python3 scripts/smtp_send.py check-config
- 發送一封郵件:
python3 scripts/smtp_send.py send \
--to recipient@example.com \
--subject "SMTP 測試" \
--body "來自 email-smtp-send 的問候"
- 附加檔案發送:
python3 scripts/smtp_send.py send \
--to recipient@example.com \
--subject "包裹遞送" \
--body "請見附件。" \
--attach ./report.pdf \
--attach ./appendix.xlsx
- 發送並同步至寄件備份:
python3 scripts/smtp_send.py send \
--to recipient@example.com \
--subject "已同步發送" \
--body "此郵件將附加至寄件備份。" \
--sync-sent \
--sent-mailbox "Sent Items"
輸出規範
check-config會印出經過清理的 SMTP 設定 JSON,包含預設值與寄件同步設定。send成功時會印出一個type=statusJSON 物件,包含:event=smtp_sent- 寄件者、收件者摘要、主旨、SMTP 主機/埠號
message_idattachment_count與attachments[]中繼資料sent_sync物件,包含enabled、required、appended以及同步中繼資料/錯誤
send失敗時會將type=errorJSON 輸出至 stderr,可能的事件:event=smtp_send_invalid_argsevent=smtp_send_failedevent=smtp_sent_sync_failed(僅在同步為必要且同步失敗時)
參數
send --to:必要收件者,可重複或逗號分隔。send --cc:選用副本收件者。send --bcc:選用密件副本收件者。send --subject:選用主旨(預設來自環境變數)。send --body:選用內文(預設來自環境變數)。send --content-type:plain或html。send --from:選用寄件者覆蓋。send --attach:選用本地附加檔案路徑,可重複或逗號分隔。send --max-attachment-bytes:每個附加檔案允許的最大位元組數。send --message-id:選用 Message-ID 標頭。send --in-reply-to:選用 In-Reply-To 標頭。send --references:選用 References 標頭。send --sync-sent|--no-sync-sent:強制啟用/停用本次發送的 IMAP 寄件同步。send --sent-mailbox:覆蓋寄件備份信箱。send --sent-flags:IMAP APPEND 旗標,逗號分隔(預設\Seen)。send --sent-sync-required:若 SMTP 成功但寄件同步失敗,回傳非零值。
環境變數預設值:
SMTP_HOST、SMTP_PORT、SMTP_SSL、SMTP_STARTTLSSMTP_USERNAME、SMTP_PASSWORD、SMTP_FROM、SMTP_CONNECT_TIMEOUTSMTP_SUBJECT、SMTP_BODY、SMTP_CONTENT_TYPESMTP_MAX_ATTACHMENT_BYTESSMTP_SYNC_SENT、SMTP_SYNC_SENT_REQUIREDSMTP_SENT_IMAP_HOST、SMTP_SENT_IMAP_PORT、SMTP_SENT_IMAP_SSLSMTP_SENT_IMAP_USERNAME、SMTP_SENT_IMAP_PASSWORDSMTP_SENT_IMAP_MAILBOX、SMTP_SENT_IMAP_FLAGS、SMTP_SENT_IMAP_CONNECT_TIMEOUT- 相容性備援:
IMAP_HOST、IMAP_PORT、IMAP_SSL、IMAP_USERNAME、IMAP_PASSWORD、IMAP_CONNECT_TIMEOUT
相依套件
- 寄件同步模式需要
imapclient:
python3 -m pip install imapclient
錯誤處理
- 無效的環境設定會以代碼
2結束。 - 發送失敗會以代碼
1結束。 - 若同步為必要(
--sent-sync-required或SMTP_SYNC_SENT_REQUIRED=true),同步失敗會以代碼1結束。
參考資料
references/env.md
資產
assets/config.example.env
腳本
scripts/smtp_send.py






