244 lines
7.2 KiB
Markdown
244 lines
7.2 KiB
Markdown
|
|
# チームメール送信システム操作マニュアル
|
|||
|
|
|
|||
|
|
## 概要
|
|||
|
|
このシステムは、ロゲイニング大会の参加チームに対して、パスワードやイベント情報を含むメールを一括送信するための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
|