mcpField
I
imap-smtp-email

imap-smtp-email

github.com/netease-youdao生産性6.2k444 回インストール5 日前に更新
リポジトリ

imap-smtp-email について

imap-smtp-email は、LobsterAI 向けのメールスキルです。IMAP でメールの閲覧・検索・管理を行い、SMTP で送信できます。複数の設定済みアカウントと標準的なメールサーバーに対応しています。

主な機能

  1. 01メールの閲覧・検索・取得
  2. 02メール添付ファイルのダウンロード
  3. 03既読・未読の切り替え
  4. 04SMTP によるメール送信
  5. 05複数の設定済みアカウントの管理

活用シーン

  1. 01複数アカウントの未読メール確認
  2. 02差出人や件名によるメール検索
  3. 03メールの添付ファイルのダウンロード
  4. 04内容を確認して添付付きメールを送信

インストール

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

$npx skills add https://github.com/netease-youdao/lobsterai --skill imap-smtp-email

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

同梱ファイル

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

_meta.json
package.json
README.md
setup.sh
scripts/
attachment-storage.js
config.js
imap.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 サーバーに対応しています。

重要:設定は事前に完了しています

accounts.json 設定ファイルは LobsterAI Settings(メール設定)によって自動的に管理されます。以前からのユーザー向けに、従来の .env 設定もフォールバックとして引き続きサポートされています。ユーザーにこれらのファイルを作成または編集するよう求めないでください。コマンドをそのまま実行してください。 認証情報が正しくない場合、スクリプトは明確なエラーメッセージを返します。その場合に限り、メール設定を確認するようユーザーに伝えてください。

設定ファイルはこのスキルのディレクトリ(この SKILL.md ファイルと同じフォルダー)にあります。スクリプトは、現在の作業ディレクトリにかかわらず、絶対パスを使用して設定ファイルを自動的に読み込みます。

メールの送受信には、提供されているスクリプトのみを使用してください。一時的な IMAP/SMTP スクリプトを作成したり、生のソケット、OpenSSL、net、tls、または代替メールクライアントを使用したりしないでください。また、公式コマンドの出力で設定がないと明示され、かつユーザーから診断を依頼された場合を除き、.env、accounts.json、またはスクリプトのソースを確認しないでください。公式コマンドが失敗またはタイムアウトした場合は、そのコマンドの結果を報告し、LobsterAI Settings の確認を提案してください。代替のプロトコルクライアントを実装しないでください。

公式スクリプトまたは検証済みのスタックトレースで証明されない限り、node-imap、nodemailer、またはその他の依存関係に不具合があると断言しないでください。コマンドが成功した場合、設定済みのメールアカウントは動作しています。タイムアウトした場合、タイムアウトしたのは実行中のコマンドであり、依存関係に不具合があるわけではありません。

コマンドの結果では、アカウントのメタデータが意図的に一部伏せられています。ユーザー向けの返信では、JSON の結果に記載された伏せ字入りのアカウントラベル/メールアドレスを使用し、ユーザーから正確なアドレスを明示的に求められない限り、設定済みの完全なメールアドレスを繰り返さないでください。送信者、件名、本文などのメール内容のフィールドは、求められた結果であれば表示してかまいません。

メール認証コード、アプリパスワード、アカウントパスワード、その他の認証情報をチャットで送信するようユーザーに求めないでください。アカウントが無効、未設定、または認証情報が正しくない場合は、LobsterAI Settings > Email Settings で有効化または更新してから、公式コマンドを再実行するようユーザーに依頼してください。

複数アカウントを設定している場合:

  • node scripts/imap.js accounts または node scripts/smtp.js accounts を実行して、秘密情報を表示せずに設定済みアカウント ID を一覧表示します。
  • --account を省略すると、デフォルトの有効なアカウントが使用されます。
  • 特定のアカウントを使用するには、--account <id> を指定します。
  • ファンアウトに対応する読み取り/一覧表示コマンド(check、search、list-mailboxes)でのみ、--all-accounts を指定します。
  • 読み取り/一覧表示コマンドの JSON 結果には、success、伏せ字入りのアカウントメタデータ、command、count、および messages や mailboxes などの結果配列が含まれます。

メールを送信する際は、送信前に必ず宛先、件名、送信元アカウント、本文をユーザーと確認してください。--confirmed が指定されない限り、送信はブロックされます。

SMTP の送信結果で success: true は、送信 SMTP サーバーがメッセージの処理を受け付けたことを意味します。最終的に配信された、または受信トレイに届いたと断言しないでください。「SMTP サーバーに送信されました」と報告し、受信側のプロバイダーによっては、後からバウンスメールで拒否される可能性があることを伝えてください。rejected または pending の宛先がある場合は、明示的に伝えてください。

ab***@example.com のような伏せ字入りのアカウントメールアドレスを宛先として使用しないでください。ユーザーが別の設定済みメールアカウントへの送信を求めた場合は、そのアカウントの id を --to-account <id> とともに指定してください。そうすれば、実際のアドレスを外部に表示せず、スクリプトが内部で解決します。

設定リファレンス

スキルのフォルダーに .env を作成するか、環境変数を設定してください。

# IMAP Configuration (receiving email)
IMAP_HOST=imap.gmail.com          # Server hostname
IMAP_PORT=993                     # Server port
[email protected]
IMAP_PASS=your_password
IMAP_TLS=true                     # Use TLS/SSL connection
IMAP_REJECT_UNAUTHORIZED=true     # Set to false for self-signed certs
IMAP_MAILBOX=INBOX                # Default mailbox

# SMTP Configuration (sending email)
SMTP_HOST=smtp.gmail.com          # SMTP server hostname
SMTP_PORT=587                     # SMTP port (587 for STARTTLS, 465 for SSL)
SMTP_SECURE=false                 # true for SSL (465), false for STARTTLS (587)
[email protected]          # Your email address
SMTP_PASS=your_password           # Your password or app password
[email protected]          # Default sender email (optional)
SMTP_REJECT_UNAUTHORIZED=true     # Set to false for self-signed certs

一般的なメールサーバー

プロバイダー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

163.com の場合の重要事項:

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

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

accounts

パスワードを公開せずに、設定済みのメールアカウントを一覧表示します。

node scripts/imap.js accounts
check

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

node scripts/imap.js check [--limit 10] [--mailbox INBOX] [--recent 2h]
node scripts/imap.js check --all-accounts [--limit 10]

オプション:

  • --account <id>:特定の設定済みアカウントを使用します
  • --all-accounts:有効なすべてのアカウントを確認します
  • --limit <n>:結果の最大件数(デフォルト:10)
  • --mailbox <name>:確認するメールボックス(デフォルト:INBOX)
  • --recent <time>:直近 X 時間内のメールのみを表示します(例:30m、2h、7d)
fetch

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

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

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

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

オプション:

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

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

node scripts/imap.js 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)
  --account <id>     Use a specific configured account
  --all-accounts     Search every enabled account
mark-read / mark-unread

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

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

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

node scripts/imap.js list-mailboxes
node scripts/imap.js list-mailboxes --all-accounts

SMTP コマンド(メールの送信)

accounts

パスワードを公開せずに、設定済みのメールアカウントを一覧表示します。

node scripts/smtp.js accounts
send

SMTP 経由でメールを送信します。コマンドが成功した場合、SMTP サーバーがメッセージを処理のために受け付けたことを意味します。受信者の受信トレイに届いたことを意味するものではありません。

node scripts/smtp.js send --to <email> --subject <text> --confirmed [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>:デフォルトの送信者を上書きします
  • --account <id>:特定の設定済みアカウントから送信します
  • --to-account <id>:完全なメールアドレスを公開せずに、ID で設定済みアカウントを宛先に指定します
  • --confirmed:ユーザーがメールの詳細を確認した後に必要です

例:

# 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"

# Send to another configured account by ID
node scripts/smtp.js send --account default --to-account account-2 --subject "Hello" --body "World"
test

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

node scripts/smtp.js test

依存関係

npm install

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

  • 認証情報は .env に保存してください(.gitignore に追加してください)
  • Gmail の場合:2FA が有効な場合はアプリパスワードを使用してください
  • 163.com の場合:アカウントのパスワードではなく、認証コード(授权码)を使用してください
  • ダウンロードした添付ファイルのファイル名は、安全なローカルファイル名に正規化されます。アカウント/UID のダウンロードフォルダー外にディレクトリを作成することはできません。

トラブルシューティング

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

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

認証に失敗する場合:

  • ユーザー名(通常はメールアドレス全体)を確認してください
  • パスワードが正しいことを確認してください
  • 163.com の場合:アカウントのパスワードではなく、認証コードを使用してください
  • Gmail の場合:2FA が有効な場合はアプリパスワードを使用してください

TLS/SSL エラーの場合:

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

コメント