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

316 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. 環境変数の設定
```bash
# .env.exampleをコピーして.envファイルを作成
cp .env.example .env
# .envファイルを編集して実際の値を設定
```
## 🐳 Docker Composeでの実行
### 1. docker-compose.ymlの設定
```yaml
environment:
- EMAIL_USER=your-email@gmail.com
- EMAIL_PASSWORD=your-app-password
- DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
```
### 2. コンテナの起動
```bash
# コンテナをビルドして起動
docker-compose up -d
# ログの確認
docker-compose logs -f
# コンテナの停止
docker-compose down
```
## 🚀 Linux用シェルスクリプトでの実行
Linux環境では便利なシェルスクリプトを使用できます
### 1. スクリプトに実行権限を付与
```bash
chmod +x start.sh
```
### 2. 初期セットアップ
```bash
# .envファイルを作成
./start.sh setup
# .envファイルを編集して実際の値を設定
nano .env
```
### 3. よく使用するコマンド
```bash
# 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. 初期セットアップ
```powershell
# .envファイルを作成
.\start.ps1 setup
# .envファイルを編集して実際の値を設定
notepad .env
```
### 2. よく使用するコマンド
```powershell
# Dockerイメージをビルド
.\start.ps1 build
# コンテナを起動
.\start.ps1 start
# リアルタイムでログを表示
.\start.ps1 logs-f
# コンテナの状態を確認
.\start.ps1 status
# コンテナを停止
.\start.ps1 stop
# ヘルプを表示
.\start.ps1 help
```
## 🔨 Dockerでの直接実行
### 1. イメージのビルド
```bash
docker build -t email-to-discord .
```
### 2. コンテナの実行
```bash
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. 依存関係のインストール
```bash
pip install -r requirements.txt
```
### 2. 環境変数の設定
```bash
# 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. アプリケーションの実行
```bash
python app.py
```
## 📧 対応メールプロバイダー
### Gmail
```env
IMAP_SERVER=imap.gmail.com
IMAP_PORT=993
USE_SSL=true
```
### Outlook/Hotmail
```env
IMAP_SERVER=outlook.office365.com
IMAP_PORT=993
USE_SSL=true
```
### Yahoo Mail
```env
IMAP_SERVER=imap.mail.yahoo.com
IMAP_PORT=993
USE_SSL=true
```
### その他のプロバイダー
各プロバイダーのIMAP設定を確認して適切な値を設定してください。
## 📊 ログとモニタリング
アプリケーションは以下の情報をログ出力します:
- 起動/停止メッセージ
- メールサーバー接続状況
- 新しいメールの検出
- Discord送信の成功/失敗
- エラー情報
```bash
# 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. ネットワーク接続を確認
### ログの確認方法
```bash
# アプリケーションのログレベルを変更(開発時)
# app.py内のlogging.basicConfig levelをDEBUGに変更
```
## 📝 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
## 🤝 コントリビューション
プルリクエストやイシューの報告を歓迎します。
## 📞 サポート
問題が発生した場合は、GitHubのIssueにて報告してください。