Files
EmailToDiscord/README.md
2025-10-13 14:20:07 +09:00

7.6 KiB
Raw Blame History

Email to Discord Webhook Forwarder

メールサーバーを監視して、新しいメールが到着したときにDiscordのWebhookを使用して通知を送信するPythonアプリケーションです。

🚀 機能

  • メールサーバー監視: IMAP/IMAPS プロトコルでメールサーバーを監視
  • Discord通知: 新しいメールが到着したときにDiscordに通知
  • 環境変数設定: 設定は全て環境変数で管理
  • Dockerサポート: コンテナとして簡単にデプロイ可能
  • SSL/TLS対応: セキュアな接続をサポート
  • エラーハンドリング: 堅牢なエラー処理とログ出力

📋 必要な環境変数

変数名 説明 必須 デフォルト値
EMAIL_USER メールアドレス -
EMAIL_PASSWORD メールパスワード/アプリパスワード -
DISCORD_WEBHOOK_URL Discord Webhook URL -
IMAP_SERVER IMAPサーバーアドレス imap.gmail.com
IMAP_PORT IMAPポート番号 993
USE_SSL SSL/TLS使用の有無 true
MAILBOX 監視するメールボックス INBOX
CHECK_INTERVAL チェック間隔(秒) 60

🔧 セットアップ

1. Discord Webhook URLの取得

  1. Discordでメッセージを送信したいチャンネルを選択
  2. チャンネル設定 → 連携サービス → ウェブフック
  3. 新しいウェブフックを作成してURLをコピー

2. Gmail用アプリパスワードの作成Gmailを使用する場合

  1. Googleアカウントの2段階認証を有効にする
  2. Googleアカウント設定 → セキュリティ → アプリパスワード
  3. メール用のアプリパスワードを生成

3. 環境変数の設定

# .env.exampleをコピーして.envファイルを作成
cp .env.example .env

# .envファイルを編集して実際の値を設定

🐳 Docker Composeでの実行

1. docker-compose.ymlの設定

environment:
  - EMAIL_USER=your-email@gmail.com
  - EMAIL_PASSWORD=your-app-password
  - DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL

2. コンテナの起動

# コンテナをビルドして起動
docker-compose up -d

# ログの確認
docker-compose logs -f

# コンテナの停止
docker-compose down

🚀 Linux用シェルスクリプトでの実行

Linux環境では便利なシェルスクリプトを使用できます

1. スクリプトに実行権限を付与

chmod +x start.sh

2. 初期セットアップ

# .envファイルを作成
./start.sh setup

# .envファイルを編集して実際の値を設定
nano .env

3. よく使用するコマンド

# Dockerイメージをビルド
./start.sh build

# コンテナを起動
./start.sh start

# リアルタイムでログを表示
./start.sh logs-f

# コンテナの状態を確認
./start.sh status

# コンテナを停止
./start.sh stop

# コンテナを再起動
./start.sh restart

# docker-compose で起動
./start.sh compose-up

# Python直接実行
./start.sh python

# ヘルプを表示
./start.sh help

4. 利用可能なコマンド一覧

コマンド 説明
setup 初期セットアップ(.envファイル作成
build Dockerイメージをビルド
start コンテナを起動
stop コンテナを停止
restart コンテナを再起動
logs ログを表示
logs-f ログをリアルタイム表示
status コンテナの状態を確認
clean 停止済みコンテナとイメージを削除
compose-up docker-compose で起動
compose-down docker-compose で停止
python Python直接実行
help ヘルプを表示

🪟 Windows用PowerShellスクリプトでの実行

Windows環境では PowerShell スクリプトを使用できます:

1. 初期セットアップ

# .envファイルを作成
.\start.ps1 setup

# .envファイルを編集して実際の値を設定
notepad .env

2. よく使用するコマンド

# Dockerイメージをビルド
.\start.ps1 build

# コンテナを起動
.\start.ps1 start

# リアルタイムでログを表示
.\start.ps1 logs-f

# コンテナの状態を確認
.\start.ps1 status

# コンテナを停止
.\start.ps1 stop

# ヘルプを表示
.\start.ps1 help

🔨 Dockerでの直接実行

1. イメージのビルド

docker build -t email-to-discord .

2. コンテナの実行

docker run -d \
  --name email-monitor \
  --restart unless-stopped \
  -e EMAIL_USER=your-email@gmail.com \
  -e EMAIL_PASSWORD=your-app-password \
  -e DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL \
  -e CHECK_INTERVAL=60 \
  email-to-discord

🐍 Python直接実行

1. 依存関係のインストール

pip install -r requirements.txt

2. 環境変数の設定

# Windowsの場合
set EMAIL_USER=your-email@gmail.com
set EMAIL_PASSWORD=your-app-password
set DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL

# Linux/macOSの場合
export EMAIL_USER=your-email@gmail.com
export EMAIL_PASSWORD=your-app-password
export DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL

3. アプリケーションの実行

python app.py

📧 対応メールプロバイダー

Gmail

IMAP_SERVER=imap.gmail.com
IMAP_PORT=993
USE_SSL=true

Outlook/Hotmail

IMAP_SERVER=outlook.office365.com
IMAP_PORT=993
USE_SSL=true

Yahoo Mail

IMAP_SERVER=imap.mail.yahoo.com
IMAP_PORT=993
USE_SSL=true

その他のプロバイダー

各プロバイダーのIMAP設定を確認して適切な値を設定してください。

📊 ログとモニタリング

アプリケーションは以下の情報をログ出力します:

  • 起動/停止メッセージ
  • メールサーバー接続状況
  • 新しいメールの検出
  • Discord送信の成功/失敗
  • エラー情報
# Dockerコンテナのログを確認
docker logs email-to-discord-monitor

# リアルタイムでログを監視
docker logs -f email-to-discord-monitor

🔒 セキュリティ考慮事項

  1. アプリパスワードの使用: 通常のパスワードではなくアプリ専用パスワードを使用
  2. 環境変数での機密情報管理: パスワードやWebhook URLは環境変数で管理
  3. SSL/TLS接続: メールサーバーとの通信は暗号化
  4. 非rootユーザー: Dockerコンテナは非rootユーザーで実行

🛠️ トラブルシューティング

メールサーバーに接続できない場合

  1. IMAP設定が正しいか確認
  2. アプリパスワードが正しく設定されているか確認
  3. 2段階認証が有効になっているか確認Gmail
  4. ファイアウォールの設定を確認

Discord通知が送信されない場合

  1. Webhook URLが正しいか確認
  2. Discordサーバーの権限を確認
  3. ネットワーク接続を確認

ログの確認方法

# アプリケーションのログレベルを変更(開発時)
# app.py内のlogging.basicConfig levelをDEBUGに変更

📝 ライセンス

このプロジェクトはMITライセンスの下で公開されています。

🤝 コントリビューション

プルリクエストやイシューの報告を歓迎します。

📞 サポート

問題が発生した場合は、GitHubのIssueにて報告してください。