mcpField
E
email-smtp-send

email-smtp-send

github.com/tiangong-ai生産性116.8k 回インストール1 週間前に更新
リポジトリ

email-smtp-send について

email-smtp-send は、SMTP でメールを送信するスキルです。スクリプトによるメール送信に向き、ローカルファイルの添付、IMAP 送信済みメールボックスへの任意同期、JSON 形式の結果出力に対応します。

主な機能

  1. 01SMTP によるメール送信
  2. 02ローカルファイルの添付
  3. 03IMAP 送信済みメールボックスへの任意同期
  4. 04設定検証と JSON 結果の出力

活用シーン

  1. 01レポートを添付したメールの送信
  2. 02メール送信後の送信済みメールボックスへの同期

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tiangong-ai/agent-skills --skill email-smtp-send

インストール後、Claude Code で/email-smtp-sendを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
assets/
config.example.env
references/
env.md
scripts/
smtp_send.py

詳細

メールの SMTP 送信

主な目的

  • 環境変数で設定した認証情報を使用して、SMTP 経由でメールを送信します。
  • 指定された場合は、ローカルファイルを MIME メールのペイロードに添付します。
  • クライアント間でメールを確認できるよう、送信したメッセージを IMAP の送信済みメールボックスに追加できます。
  • 送信前に、SMTP と送信済みメール同期の設定を検証します。
  • 機械可読な JSON 形式でステータスまたはエラーを返します。

ワークフロー

  1. SMTP の環境変数を設定します(references/env.md と assets/config.example.env を参照してください)。
  2. 任意:IMAP の送信済みメール同期用の環境変数を設定し、同期を有効にする場合は imapclient をインストールします。
  3. 設定を検証します。
python3 scripts/smtp_send.py check-config
  1. メールを 1 通送信します。
python3 scripts/smtp_send.py send \
  --to [email protected] \
  --subject "SMTP test" \
  --body "Hello from email-smtp-send"
  1. 添付ファイル付きで送信します。
python3 scripts/smtp_send.py send \
  --to [email protected] \
  --subject "Package delivery" \
  --body "See attachments." \
  --attach ./report.pdf \
  --attach ./appendix.xlsx
  1. 送信済みメールボックスに同期して送信します。
python3 scripts/smtp_send.py send \
  --to [email protected] \
  --subject "Synced send" \
  --body "This message will be appended to Sent Items." \
  --sync-sent \
  --sent-mailbox "Sent Items"

出力仕様

  • check-config は、サニタイズされた SMTP 設定、デフォルト値、送信済みメール同期設定を含む JSON を出力します。
  • send が成功すると、次の内容を含む type=status の JSON オブジェクトを 1 つ出力します。
    • event=smtp_sent
    • 送信者、宛先の概要、件名、SMTP ホスト/ポート
    • message_id
    • attachment_count と添付ファイルのメタデータを含む attachments[]
    • enabled、required、appended と同期のメタデータ/エラーを含む sent_sync オブジェクト
  • send が失敗すると、次のいずれかを含む type=error の JSON を stderr に出力します。
    • event=smtp_send_invalid_args
    • event=smtp_send_failed
    • event=smtp_sent_sync_failed(同期が必須で、同期に失敗した場合のみ)

パラメーター

  • send --to:必須の宛先です。複数回指定するか、カンマ区切りで指定できます。
  • send --cc:任意の CC 宛先です。
  • send --bcc:任意の 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_STARTTLS
  • SMTP_USERNAME、SMTP_PASSWORD、SMTP_FROM、SMTP_CONNECT_TIMEOUT
  • SMTP_SUBJECT、SMTP_BODY、SMTP_CONTENT_TYPE
  • SMTP_MAX_ATTACHMENT_BYTES
  • SMTP_SYNC_SENT、SMTP_SYNC_SENT_REQUIRED
  • SMTP_SENT_IMAP_HOST、SMTP_SENT_IMAP_PORT、SMTP_SENT_IMAP_SSL
  • SMTP_SENT_IMAP_USERNAME、SMTP_SENT_IMAP_PASSWORD
  • SMTP_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

コメント