# チームメール送信システム操作マニュアル

## 概要
このシステムは、ロゲイニング大会の参加チームに対して、パスワードやイベント情報を含むメールを一括送信するためのDjango管理コマンドです。

## 前提条件

### 必要な環境
- Docker Compose環境が稼働していること
- PostgreSQLデータベースが接続されていること
- SMTPサーバー設定が完了していること（Outlook: smtp.outlook.com:587）

### 必要なファイル
1. **CSVファイル**: チーム情報を含むデータファイル
2. **メールテンプレートファイル**:
   - `/templates/emails/team_registration_subject.txt` (件名テンプレート)
   - `/templates/emails/team_registration_body.txt` (本文テンプレート)

## CSVファイル形式

### ファイル配置場所
```
CPLIST/input/team_mail.csv
```

### CSVファイルの形式
```csv
team_name,email,password,category,duration,leader_name,phone_number,member_names
チーム名,メールアドレス,パスワード,部門,時間,代表者名,電話番号,メンバー名
```

### 例
```csv
team_name,email,password,category,duration,leader_name,phone_number,member_names
ウエストサイド,hannivalscipio@gmail.com,west123,一般,3,田中太郎,090-1234-5678,田中太郎・佐藤花子
```

## メールテンプレート

### 件名テンプレート (`/templates/emails/team_registration_subject.txt`)
```
【岐阜ロゲ in 大垣】チーム「{{ team_name }}」パスワードのご連絡
```

### 本文テンプレート (`/templates/emails/team_registration_body.txt`)
```
{{ team_name }} 代表者 {{leader_name}} 様

岐阜ロゲ in 大垣 へのご参加ありがとうございます。

ご連絡が大変遅くなり、申し訳ございません。

以下の内容でパスワードをお送りいたしますので、よろしくお願い申し上げます。

■ チーム情報

チーム名: {{ team_name }}
部門: {{ category }}（{{ duration }}時間）

ユーザー名: {{ email }}
パスワード： {{ password }}


--
岐阜ロゲ in 大垣
運営：NPO 岐阜aiネットワーク
```

### 利用可能な変数
- `{{ team_name }}` - チーム名
- `{{ email }}` - メールアドレス
- `{{ password }}` - パスワード
- `{{ category }}` - 部門
- `{{ duration }}` - 時間
- `{{ leader_name }}` - 代表者名
- `{{ phone_number }}` - 電話番号
- `{{ member_names }}` - メンバー名

## 操作手順

### 1. 事前準備
1. CSVファイルを `CPLIST/input/team_mail.csv` に配置
2. メールテンプレートファイルを確認・編集
3. Docker環境が起動していることを確認

### 2. ドライラン（テスト実行）
実際にメールを送信する前に、テスト実行を行います：

```bash
cd /path/to/rogaining_srv
docker compose exec app python manage.py send_team_emails --csv_file='CPLIST/input/team_mail.csv' --dry_run
```

**ドライランの確認項目：**
- CSVファイルが正常に読み込まれるか
- テンプレートが正しく適用されるか
- 送信対象の件数が正しいか
- メールの件名・本文のプレビューが正しいか

### 3. 実際のメール送信
ドライランで問題がないことを確認後、実際の送信を行います：

```bash
cd /path/to/rogaining_srv
docker compose exec app python manage.py send_team_emails --csv_file='CPLIST/input/team_mail.csv'
```

### 4. 送信結果の確認
コマンド実行後、以下の情報が表示されます：
- 処理行数
- メール送信数
- エラーがあった場合のエラー内容

## コマンドオプション

### 基本コマンド
```bash
python manage.py send_team_emails --csv_file='<CSVファイルパス>'
```

### オプション一覧
- `--csv_file`: CSVファイルのパス（必須）
- `--dry_run`: ドライラン（テスト実行）モード
- `--delay`: メール送信間隔（秒）デフォルト: 1秒

### 使用例
```bash
# ドライランモード
python manage.py send_team_emails --csv_file='CPLIST/input/team_mail.csv' --dry_run

# 実際の送信
python manage.py send_team_emails --csv_file='CPLIST/input/team_mail.csv'

# 送信間隔を3秒に設定
python manage.py send_team_emails --csv_file='CPLIST/input/team_mail.csv' --delay=3
```

## エラー対処法

### よくあるエラーと対処法

#### 1. CSVファイルが見つからない
```
CommandError: CSVファイルが見つかりません: CPLIST/input/team_mail.csv
```
**対処法：**
- ファイルパスを確認
- ファイル名のスペルミスをチェック
- ファイルが存在することを `ls -la CPLIST/input/` で確認

#### 2. テンプレートファイルが見つからない
```
TemplateDoesNotExist: emails/team_registration_subject.txt
```
**対処法：**
- テンプレートファイルが正しい場所に配置されているか確認
- ファイル名が正しいかチェック
- Docker容器を再起動: `docker compose restart app`

#### 3. SMTP接続エラー
```
SMTPException: SMTP Auth failure
```
**対処法：**
- メールサーバー設定を確認
- 認証情報（ユーザー名・パスワード）を確認
- ネットワーク接続を確認

#### 4. CSV読み込みエラー
**対処法：**
- CSVファイルの文字エンコーディング（UTF-8 BOM）を確認
- CSVヘッダーが正しいか確認
- 必須フィールドが欠けていないかチェック

## セキュリティ注意事項

1. **パスワード情報の取り扱い**
   - CSVファイルには機密情報が含まれるため、適切なアクセス権限を設定
   - 送信完了後はCSVファイルを安全な場所に移動またはバックアップ

2. **メール送信記録**
   - 送信ログを保存し、送信状況を記録
   - 重複送信を避けるため、送信済みチームを管理

3. **レート制限**
   - 大量送信時はレート制限を考慮し、適切な間隔を設定
   - SMTPサーバーの制限を確認

## トラブルシューティング

### Docker関連
```bash
# コンテナの状態確認
docker compose ps

# コンテナの再起動
docker compose restart app

# ログの確認
docker compose logs app
```

### データベース接続確認
```bash
# データベース接続テスト
docker compose exec app python manage.py dbshell
```

### CSVファイル確認
```bash
# ファイル存在確認
ls -la CPLIST/input/

# ファイル内容確認
head -5 CPLIST/input/team_mail.csv
```

## 運用Tips

1. **バッチ送信**
   - 大量のメール送信時は、CSVファイルを分割して複数回に分けて送信
   - 送信間隔を適切に設定してサーバー負荷を軽減

2. **テスト環境での確認**
   - 本番送信前に、テスト用メールアドレスでの動作確認を推奨
   - ドライランを必ず実行

3. **バックアップ**
   - 送信前にCSVファイルとテンプレートファイルをバックアップ
   - 送信ログを保存

## 更新履歴

- 2025年9月5日: 初版作成
  - 基本的なメール送信機能
  - Django テンプレートシステム統合
  - Outlook SMTP設定対応

## 連絡先

システムに関する問い合わせ：
- 運営：NPO 岐阜aiネットワーク
- メール：rogaining@gifuai.net
