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

7.2 KiB
Raw Blame History

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

概要

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

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. 事前準備

  1. CSVファイルを CPLIST/input/team_mail.csv に配置
  2. メールテンプレートファイルを確認・編集
  3. 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ヘッダーが正しいか確認
  • 必須フィールドが欠けていないかチェック

セキュリティ注意事項

  1. パスワード情報の取り扱い

    • CSVファイルには機密情報が含まれるため、適切なアクセス権限を設定
    • 送信完了後はCSVファイルを安全な場所に移動またはバックアップ
  2. メール送信記録

    • 送信ログを保存し、送信状況を記録
    • 重複送信を避けるため、送信済みチームを管理
  3. レート制限

    • 大量送信時はレート制限を考慮し、適切な間隔を設定
    • 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

  1. バッチ送信

    • 大量のメール送信時は、CSVファイルを分割して複数回に分けて送信
    • 送信間隔を適切に設定してサーバー負荷を軽減
  2. テスト環境での確認

    • 本番送信前に、テスト用メールアドレスでの動作確認を推奨
    • ドライランを必ず実行
  3. バックアップ

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

更新履歴

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

連絡先

システムに関する問い合わせ: