Files
rogaining_srv/メール送信マニュアル.md
2025-09-05 22:48:15 +09:00

244 lines
7.2 KiB
Markdown
Raw 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.

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