m365-mail について
m365-mailは、Microsoft Graphを通じてMicrosoft 365のメールを扱うコマンドラインツールです。端末やスクリプトでメールを読む、検索する、送信する、整理するといった操作ができ、テキストとJSONで出力します。
主な機能
- 01条件を指定した受信トレイ一覧
- 02メールの閲覧と検索
- 03テキストまたはHTMLメールの送信
- 04メールの移動、削除、状態変更
- 05テキストとJSONでの出力
活用シーン
- 01未読メールの確認
- 02送信者や添付ファイルでの検索
- 031人または複数の宛先への送信
- 04メールのアーカイブや状態更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ probichaux/ clawdskills --skill m365-mailインストール後、Claude Code で/m365-mailを入力して読み込まれたか確認します。
同梱ファイルscripts/m365mailscripts/m365mail.py
詳細
Microsoft 365 Mail
Microsoft Graph API を介して Microsoft 365 のメールを操作する CLI ツールです。
セットアップ(一度のみ)
1. Entra ID アプリを登録する
- Entra ID Portal → アプリの登録 → 新規登録に移動します
- 名前:
m365mail-cli(または任意の名前) - サポートされているアカウントの種類:「この組織のディレクトリ内のアカウントのみ」
- リダイレクト URI:空欄のままにします(デバイスコードフローを使用します)
- 「登録」をクリックします
2. API のアクセス許可を設定する
- アプリで → API のアクセス許可 → アクセス許可の追加に移動します
- Microsoft Graph → 委任されたアクセス許可を選択します
Mail.ReadWrite、Mail.Sendを追加します- 「管理者の同意を与えます」をクリックします(または管理者に依頼します)
3. パブリッククライアントフローを有効にする
- アプリで → 認証に移動します
- 「詳細設定」の「パブリッククライアントフローを許可する」をはいに設定します
- 保存します
4. ID を控える
- アプリケーション(クライアント)ID:アプリの概要ページにあります
- ディレクトリ(テナント)ID:アプリの概要ページにあります
5. インストールと設定
# Install dependencies
pip install msal requests
# Make executable
chmod +x skills/m365-mail/scripts/m365mail.py
# Optional: symlink to PATH
ln -s $(pwd)/skills/m365-mail/scripts/m365mail.py /usr/local/bin/m365mail
# Configure
m365mail setup --client-id <YOUR_CLIENT_ID> --tenant-id <YOUR_TENANT_ID>
# Authenticate (opens browser for device code)
m365mail auth
コマンド
受信トレイを一覧表示
m365mail inbox # Last 20 messages
m365mail inbox -n 50 # Last 50 messages
m365mail inbox -u # Unread only
m365mail inbox -v # With preview
m365mail inbox --json # JSON output
メッセージを読む
m365mail read <message_id> # Full message
m365mail read <id> --max-length 500 # Truncate body
m365mail read <id> --json # JSON output
検索
m365mail search "quarterly report" # Full-text search
m365mail search -f [email protected] # From specific sender
m365mail search -u # Unread only
m365mail search -a # Has attachments
m365mail search "budget" -f [email protected] -u # Combine filters
メールを送信
m365mail send --to [email protected] --subject "Hello" --body "Message body"
m365mail send --to [email protected] [email protected] --cc [email protected] --subject "Hi" --body "Text"
m365mail send --to [email protected] --subject "Report" --body-file report.txt
m365mail send --to [email protected] --subject "HTML" --body "<h1>Hi</h1>" --html
メッセージを管理
m365mail folders # List all folders
m365mail move <message_id> Archive # Move to folder
m365mail move <message_id> "Deleted Items"
m365mail delete <message_id> # Permanently delete
m365mail mark <message_id> --read # Mark read
m365mail mark <message_id> --unread # Mark unread
出力形式
- デフォルト:人が読みやすい表/テキスト
--json:機械処理用の JSON(プログラムからアクセスする場合に使用)-v/--verbose:メッセージのプレビューを含めます
メッセージ ID
メッセージは AAMkAGI2... のような長い ID で識別されます。コマンドでは次の形式を使用できます。
- 完全な ID
- ID の先頭部分(通常、先頭 8 文字以上で一意になります)
受信トレイ/検索結果には、参照しやすいように [AAMkAGI2] の形式で ID の先頭部分が表示されます。
トークンの保存先
トークンは ~/.m365mail/ にキャッシュされます。
config.json- クライアント ID/テナント IDtoken_cache.json- OAuth トークン(自動更新)
トラブルシューティング
「キャッシュされたトークンがありません」:m365mail auth を実行します
アクセス許可が拒否されました:Mail.ReadWrite と Mail.Send のアクセス許可が付与されていることを確認します(管理者の同意が必要な場合があります)
トークンの有効期限が切れました:ツールが自動更新します。問題が解決しない場合は、もう一度 m365mail auth を実行します
コメント
Markdown 対応