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