mcpField
I
imap-smtp-email

imap-smtp-email

github.com/gzlicanyi生産性657 回インストール15 週間前に更新
リポジトリ

imap-smtp-email について

imap-smtp-emailは、IMAPでメールを管理し、SMTPで送信するコマンドラインスキルです。ターミナルやスクリプトでメールを扱うユーザー向けで、複数アカウントの設定や検索、添付ファイル、既読状態の管理に対応します。

主な機能

  1. 01IMAPメールの確認・検索・取得
  2. 02SMTPによるメール送信
  3. 03メールボックスと既読状態の管理
  4. 04メール添付ファイルのダウンロード
  5. 05複数アカウントの設定と切り替え

活用シーン

  1. 01未読メールの確認と最近のメールの絞り込み
  2. 02メール検索と本文の取得
  3. 03CCや添付ファイル付きメールの送信
  4. 04複数のメールアカウントの切り替え

インストール

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

$npx skills add https://github.com/gzlicanyi/mail-skills --skill imap-smtp-email

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

同梱ファイル

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

package-lock.json
package.json
setup.sh
scripts/
config.js
imap.js
migrate-legacy-config.js
providers.js
search-filter.js
smtp.js

詳細

IMAP/SMTP メールツール

IMAP プロトコルでメールを読み取り、検索、管理します。SMTP でメールを送信します。Gmail、Outlook、163.com、vip.163.com、126.com、vip.126.com、188.com、vip.188.com、および標準的な IMAP/SMTP サーバーに対応しています。

設定

セットアップスクリプトを実行して、依存関係をインストールし、メールアカウントを設定します。

bash setup.sh

setup.sh を使わずにコマンドを手動で実行する場合は、先に依存関係をインストールしてください。

npm install --production

設定は ~/.config/mail-skills/.env に保存されます(caldav-sync スキルと共有され、スキルの更新後も保持されます)。共有設定が見つからない場合は、~/.config/imap-smtp-email/.env(旧形式)、次にスキルディレクトリ内の .env ファイルを確認します。

設定ファイルの形式(共有)
# Default account
PROVIDER=163
[email protected]
PASSWORD=your_password

# File access whitelist (security)
ALLOWED_READ_DIRS=~/Downloads,~/Documents
ALLOWED_WRITE_DIRS=~/Downloads

PROVIDER プリセットを使うと、IMAP/SMTP サーバーの設定が自動入力されます。カスタムサーバーを使用する場合:

PROVIDER=custom
[email protected]
PASSWORD=your_password
IMAP_HOST=imap.example.com
SMTP_HOST=smtp.example.com
旧形式の設定ファイル

既存の ~/.config/imap-smtp-email/.env がある場合は、共有設定よりも優先されます。形式は次のとおりです。

# Default account (no prefix)
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
[email protected]
IMAP_PASS=your_password
IMAP_TLS=true
IMAP_REJECT_UNAUTHORIZED=true
IMAP_MAILBOX=INBOX

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
[email protected]
SMTP_PASS=your_password
[email protected]
SMTP_REJECT_UNAUTHORIZED=true

# File access whitelist (security)
ALLOWED_READ_DIRS=~/Downloads,~/Documents
ALLOWED_WRITE_DIRS=~/Downloads

bash setup.sh を実行して、旧形式の設定を共有形式に移行します。

複数アカウント

同じ設定ファイルで、メールアカウントを追加設定できます。各アカウントのすべての変数には、大文字の名前プレフィックスが付きます。

アカウントの追加

セットアップスクリプトを実行し、「Add a new account」を選択します。

bash setup.sh

または、~/.config/mail-skills/.env にプレフィックス付きの変数を手動で追加します。

# Work account (WORK_ prefix)
WORK_PROVIDER=gmail
[email protected]
WORK_PASSWORD=app_password
名前を指定したアカウントの使用

コマンドの前に --account <name> を追加します。

node scripts/imap.js --account work check
node scripts/smtp.js --account work send --to [email protected] --subject Hi --body Hello

--account を指定しない場合は、デフォルト(プレフィックスなし)のアカウントが使用されます。

アカウント名のルール
  • 使用できるのは英字と数字のみです(例:work、163、personal2)。
  • 大文字と小文字は区別されません。work と WORK は同じアカウントを指します。
  • .env 内のプレフィックスは常に大文字です(例:WORK_PROVIDER)。
  • ALLOWED_READ_DIRS と ALLOWED_WRITE_DIRS はすべてのアカウントで共有されます(常にプレフィックスなし)。

一般的なメールサーバー

プロバイダーIMAP ホストIMAP ポートSMTP ホストSMTP ポート
163.comimap.163.com993smtp.163.com465
vip.163.comimap.vip.163.com993smtp.vip.163.com465
126.comimap.126.com993smtp.126.com465
vip.126.comimap.vip.126.com993smtp.vip.126.com465
188.comimap.188.com993smtp.188.com465
vip.188.comimap.vip.188.com993smtp.vip.188.com465
yeah.netimap.yeah.net993smtp.yeah.net465
Gmailimap.gmail.com993smtp.gmail.com587
Outlookoutlook.office365.com993smtp.office365.com587
QQ Mailimap.qq.com993smtp.qq.com587
exmail.qq.comimap.exmail.qq.com993smtp.exmail.qq.com465

Gmail に関する重要事項:

  • Gmail では通常のアカウントパスワードを使用できません。
  • アプリパスワードを生成する必要があります:https://myaccount.google.com/apppasswords
  • 生成した 16 文字のアプリパスワードを IMAP_PASS / SMTP_PASS として使用します。
  • Google アカウントで 2 段階認証を有効にする必要があります。

163.com に関する重要事項:

  • アカウントパスワードではなく、認証コード(授权码)を使用してください。
  • 先にウェブ設定で IMAP/SMTP を有効にしてください。

IMAP コマンド(メールの受信)

check

新着メールまたは未読メールを確認します。

node scripts/imap.js [--account <name>] check [--limit 10] [--mailbox INBOX] [--recent 2h]

オプション:

  • --limit <n>:結果の最大件数(デフォルト:10)
  • --mailbox <name>:確認するメールボックス(デフォルト:INBOX)
  • --recent <time>:過去 X 時間以内のメールのみ表示します(例:30m、2h、7d)
  • --unseen:未読メッセージのみ表示します

出力は { "results": [...], "meta": {...} } 形式のオブジェクトです(search と同じ形式です。check では meta.fallbackUsed は常に false です)。

fetch

UID を指定して、メールの全文を取得します。

node scripts/imap.js [--account <name>] fetch <uid> [--mailbox INBOX]
download

メールの添付ファイルをすべてダウンロードするか、特定の添付ファイルをダウンロードします。

node scripts/imap.js [--account <name>] download <uid> [--mailbox INBOX] [--dir <path>] [--file <filename>]

オプション:

  • --mailbox <name>:メールボックス(デフォルト:INBOX)
  • --dir <path>:出力ディレクトリ(デフォルト:現在のディレクトリ)
  • --file <filename>:指定した添付ファイルのみダウンロードします(デフォルト:すべてダウンロード)
search

フィルターを指定してメールを検索します。

node scripts/imap.js [--account <name>] search [options]

Options:
  --unseen           Only unread messages
  --seen             Only read messages
  --from <email>     From address contains
  --subject <text>   Subject contains
  --recent <time>    From last X time (e.g., 30m, 2h, 7d)
  --since <date>     After date (YYYY-MM-DD)
  --before <date>    Before date (YYYY-MM-DD)
  --limit <n>        Max results (default: 20)
  --mailbox <name>   Mailbox to search (default: INBOX)
  --sort <mode>      uid (default, fast) or date (strict INTERNALDATE sort;
                     fetches all matches, use when mailbox has COPY'd/backdated mail)

出力は { "results": [...], "meta": {...} } というオブジェクトです。results はメッセージオブジェクトの配列で、meta には fallbackUsed、provider、scope、scanned、matched、returned、truncated、および任意の note が含まれます。

163/126/188/yeah.net(NetEase)のアカウントでは、IMAP サーバーがテキストベースの SEARCH(--from/--subject)に対して、空の結果を黙って返します。これらは自動的にクライアント側でフィルタリングされます。サーバー側の SEARCH では日付とフラグの条件のみを適用し、その後、取得したメッセージをローカルでフィルタリングします。日付やフラグの範囲を指定せずに --from/--subject で検索する場合、直近 200 件のメッセージのみがスキャンされます(meta.truncated=true)。より広い範囲を検索するには、--recent/--since を追加してください。

mark-read / mark-unread

メッセージを既読または未読にします。

node scripts/imap.js [--account <name>] mark-read <uid> [uid2 uid3...]
node scripts/imap.js [--account <name>] mark-unread <uid> [uid2 uid3...]
list-mailboxes

利用可能なメールボックス/フォルダーをすべて一覧表示します。

node scripts/imap.js [--account <name>] list-mailboxes
list-accounts

設定済みのメールアカウントをすべて一覧表示します。

node scripts/imap.js list-accounts
node scripts/smtp.js list-accounts

アカウント名、メールアドレス、サーバーアドレス、設定状況が表示されます。

SMTP Commands (メールの送信)

send

SMTP 経由でメールを送信します。

node scripts/smtp.js [--account <name>] send --to <email> --subject <text> [options]

必須:

  • --to <email>:宛先(複数の場合はコンマ区切り)
  • --subject <text>:メールの件名、または --subject-file <file>

任意:

  • --body <text>:プレーンテキストの本文
  • --html:本文を HTML として送信
  • --body-file <file>:ファイルから本文を読み込み
  • --html-file <file>:ファイルから HTML を読み込み
  • --cc <email>:CC の宛先
  • --bcc <email>:BCC の宛先
  • --attach <file>:添付ファイル(コンマ区切り)
  • --from <email>:既定の差出人を上書き

例:

# Simple text email
node scripts/smtp.js send --to [email protected] --subject "Hello" --body "World"

# HTML email
node scripts/smtp.js send --to [email protected] --subject "Newsletter" --html --body "<h1>Welcome</h1>"

# Email with attachment
node scripts/smtp.js send --to [email protected] --subject "Report" --body "Please find attached" --attach report.pdf

# Multiple recipients
node scripts/smtp.js send --to "[email protected],[email protected]" --cc "[email protected]" --subject "Update" --body "Team update"
test

自分宛てにテストメールを送信して SMTP 接続をテストします。

node scripts/smtp.js [--account <name>] test

セキュリティに関する注意事項

  • 設定は 600 権限(所有者のみ読み書き可能)で ~/.config/mail-skills/.env(レガシー版では ~/.config/imap-smtp-email/.env)に保存されます
  • Gmail:通常のパスワードは拒否されます。https://myaccount.google.com/apppasswords でアプリパスワードを生成してください
  • 163.com では、アカウントのパスワードではなく認証コード(授权码)を使用してください

トラブルシューティング

接続がタイムアウトする場合:

  • サーバーが稼働中で、アクセス可能であることを確認してください
  • ホスト/ポートの設定を確認してください

認証に失敗する場合:

  • ユーザー名を確認してください(通常はメールアドレス全体です)
  • パスワードが正しいことを確認してください
  • 163.com では、アカウントのパスワードではなく認証コードを使用してください
  • Gmail では、通常のパスワードは使用できません。https://myaccount.google.com/apppasswords でアプリパスワードを生成してください

TLS/SSL エラー:

  • IMAP_TLS/SMTP_SECURE の設定をサーバーの要件に合わせてください
  • 自己署名証明書の場合は、IMAP_REJECT_UNAUTHORIZED=false または SMTP_REJECT_UNAUTHORIZED=false を設定してください

関連スキル

  • caldav-sync - CalDAV プロトコルを使用したカレンダーとタスクの管理。Google Calendar、iCloud、NetEase などで、予定、ToDo、空き時間の照会を管理できます。次のコマンドでインストールします:
    npx skills add https://github.com/gzlicanyi/mail-skills -s caldav-sync
    

フィードバック

問題の報告やプルリクエストは、github.com/gzlicanyi/mail-skills で歓迎しています。

コメント