7.2 KiB
7.2 KiB
チームメール送信システム操作マニュアル
概要
このシステムは、ロゲイニング大会の参加チームに対して、パスワードやイベント情報を含むメールを一括送信するためのDjango管理コマンドです。
前提条件
必要な環境
- Docker Compose環境が稼働していること
- PostgreSQLデータベースが接続されていること
- SMTPサーバー設定が完了していること(Outlook: smtp.outlook.com:587)
必要なファイル
- CSVファイル: チーム情報を含むデータファイル
- メールテンプレートファイル:
/templates/emails/team_registration_subject.txt(件名テンプレート)/templates/emails/team_registration_body.txt(本文テンプレート)
CSVファイル形式
ファイル配置場所
CPLIST/input/team_mail.csv
CSVファイルの形式
team_name,email,password,category,duration,leader_name,phone_number,member_names
チーム名,メールアドレス,パスワード,部門,時間,代表者名,電話番号,メンバー名
例
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. 事前準備
- CSVファイルを
CPLIST/input/team_mail.csvに配置 - メールテンプレートファイルを確認・編集
- Docker環境が起動していることを確認
2. ドライラン(テスト実行)
実際にメールを送信する前に、テスト実行を行います:
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. 実際のメール送信
ドライランで問題がないことを確認後、実際の送信を行います:
cd /path/to/rogaining_srv
docker compose exec app python manage.py send_team_emails --csv_file='CPLIST/input/team_mail.csv'
4. 送信結果の確認
コマンド実行後、以下の情報が表示されます:
- 処理行数
- メール送信数
- エラーがあった場合のエラー内容
コマンドオプション
基本コマンド
python manage.py send_team_emails --csv_file='<CSVファイルパス>'
オプション一覧
--csv_file: CSVファイルのパス(必須)--dry_run: ドライラン(テスト実行)モード--delay: メール送信間隔(秒)デフォルト: 1秒
使用例
# ドライランモード
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ヘッダーが正しいか確認
- 必須フィールドが欠けていないかチェック
セキュリティ注意事項
-
パスワード情報の取り扱い
- CSVファイルには機密情報が含まれるため、適切なアクセス権限を設定
- 送信完了後はCSVファイルを安全な場所に移動またはバックアップ
-
メール送信記録
- 送信ログを保存し、送信状況を記録
- 重複送信を避けるため、送信済みチームを管理
-
レート制限
- 大量送信時はレート制限を考慮し、適切な間隔を設定
- SMTPサーバーの制限を確認
トラブルシューティング
Docker関連
# コンテナの状態確認
docker compose ps
# コンテナの再起動
docker compose restart app
# ログの確認
docker compose logs app
データベース接続確認
# データベース接続テスト
docker compose exec app python manage.py dbshell
CSVファイル確認
# ファイル存在確認
ls -la CPLIST/input/
# ファイル内容確認
head -5 CPLIST/input/team_mail.csv
運用Tips
-
バッチ送信
- 大量のメール送信時は、CSVファイルを分割して複数回に分けて送信
- 送信間隔を適切に設定してサーバー負荷を軽減
-
テスト環境での確認
- 本番送信前に、テスト用メールアドレスでの動作確認を推奨
- ドライランを必ず実行
-
バックアップ
- 送信前にCSVファイルとテンプレートファイルをバックアップ
- 送信ログを保存
更新履歴
- 2025年9月5日: 初版作成
- 基本的なメール送信機能
- Django テンプレートシステム統合
- Outlook SMTP設定対応
連絡先
システムに関する問い合わせ:
- 運営:NPO 岐阜aiネットワーク
- メール:rogaining@gifuai.net