📋 システム概要
このシステムは、Microsoft 365(Office 365)のメールアカウントを使用して、複数の宛先に一括でメールを送信するWebアプリケーションです。
主な機能
📤 一括送信
CSVファイルから宛先を読み込み、パーソナライズされたメールを一括送信
🤖 AI生成
Dify APIを使用してメール本文をAIで自動生成
📝 テンプレート
よく使う件名・本文をテンプレートとして保存・共有
🚫 停止リスト
配信停止者を管理し、誤送信を防止
📊 開封トラッキング
メールの開封状況をリアルタイムで追跡
🔍 返信監視
バウンスメールや配信停止希望を自動検出
📋 アンケート
メールと連携したアンケート作成・回答収集・分析
👥 顧客管理
顧客リストの一元管理、タグ付け、配信履歴追跡
- Microsoft 365アカウント(メール送信権限)
- モダンブラウザ(Chrome、Edge、Safari推奨)
- インターネット接続
🚀 はじめ方
ログイン
「Microsoft でログイン」ボタンをクリックし、Microsoft 365アカウントでログインします。
CSVファイルの準備
送信先のメールアドレスを含むCSVファイルを準備します。
- 1行目: ヘッダー(列名)
- 2行目以降: データ
- 必須列: メールアドレス列(列名は自由)
メールを作成して送信
3つのステップでメールを送信します:
- Step1: CSVをアップロード、メールアドレス列を選択
- Step2: 件名・本文を入力、プレースホルダーで差し込み
- Step3: 送信先を確認し、送信実行
📂 Step1: 送信リスト
CSVファイルのアップロード
ファイルを選択
「ファイルを選択」ボタンをクリックし、送信先リストのCSVファイルを選択します。
- 対応文字コード: UTF-8、Shift-JIS(自動判定)
- ファイルサイズ: 制限なし(ただし送信数に注意)
メールアドレス列を選択
CSVの列から、メールアドレスが含まれる列を選択します。
停止リストの管理
配信を停止したいメールアドレスを管理できます。
- CSV/テキストで追加: ファイルから一括追加
- 手動で追加: 個別にメールアドレスを入力
- Firebase同期: チーム間で停止リストを共有
- 検索・削除: 停止リストの内容を確認・編集
デジタルギフトの追加(オプション)
各受信者に個別のデジタルギフトURL等を差し込むことができます。
- デジタルギフトCSVを用意(各行にギフト情報)
- 「デジタルギフト追加」からCSVをアップロード
- 本文に
{デジタルギフト}を記載 - 送信時に各受信者に異なるギフトが割り当てられる
✍️ Step2: メール作成
基本情報の入力
| 項目 | 説明 |
|---|---|
| 送信元メールアドレス | ログインユーザーのメールアドレスが自動設定されます。共有メールボックスも選択可能(権限必要)。 |
| 件名 | メールの件名。プレースホルダー使用可能。 |
| 本文 | メールの本文。HTMLモード/テキストモードを切り替え可能。 |
プレースホルダーで差し込み
CSVの列名を {列名} の形式で記載すると、各受信者のデータで自動置換されます。
例
CSVデータ:
| 名前 | 会社名 | |
|---|---|---|
| tanaka@example.com | 田中太郎 | 株式会社Example |
本文テンプレート:
{会社名} {名前}様
いつもお世話になっております。
送信結果:
株式会社Example 田中太郎様
いつもお世話になっております。
HTMLメールの作成
「HTMLエディタ」ボタンをクリックすると、リッチテキストエディタが表示されます。
- 太字、斜体、下線
- 文字色、背景色
- リンク挿入
- 箇条書き、番号付きリスト
配信停止案内の追加
「配信停止案内を自動追加」をチェックすると、メール末尾に配信停止の案内が追加されます。
🚀 Step3: 送信実行
送信前の確認
送信リストが表示されます。以下を確認してください:
- ✅ メールアドレスが正しいか
- ✅ 停止リスト該当者(赤背景)がいないか
- ✅ 送信件数が正しいか
送信実行
送信対象を選択
- 「全選択」: 停止リスト以外の全員
- 個別選択: チェックボックスで選択
確認ダイアログ
「選択した宛先に送信」ボタンをクリックすると、最終確認ダイアログが表示されます。
- 送信件数
- 停止リストスキップ件数
- 件名・本文のサマリー
確認チェックボックスをONにして「送信開始」をクリック。
送信中
進捗状況がリアルタイムで表示されます:
- 成功件数
- エラー件数
- 経過時間・残り時間
- 送信速度(件/秒)
送信完了
完了後、送信結果レポートが表示されます。
- 成功: ○○件
- エラー: ○○件
- スキップ: ○○件(停止リスト該当)
📝 テンプレート機能
よく使う件名・本文をテンプレートとして保存し、再利用できます。
テンプレートの保存
Step2でメール内容(件名・本文)を入力
「💾 保存」ボタンをクリック
テンプレート名を入力して保存
テンプレートの読み込み
- テンプレート選択ドロップダウンから読み込みたいテンプレートを選択
- 自動的に件名・本文が入力される
- 必要に応じて編集
テンプレートの削除
- 削除したいテンプレートを選択
- 「🗑️ 削除」ボタンをクリック
- 確認ダイアログで「OK」
更新ボタン
「🔄 更新」ボタンをクリックすると、他のメンバーが保存したテンプレートを再読み込みできます。
🚫 停止リスト管理
配信を停止したいメールアドレスを管理する機能です。停止リストに登録されたアドレスには送信されません。
停止リストへの追加方法
1. CSV/テキストファイルから追加
- Step1の「停止リスト読込」セクション
- 「ファイルを選択」でCSVまたはテキストファイルを選択
- 自動的にメールアドレスが抽出され、停止リストに追加
2. 手動で追加
- 「手動追加」ボタンをクリック
- メールアドレスを入力
- 理由を入力(オプション)
- 「追加」をクリック
3. 返信監視から自動追加
バウンスメールや配信停止希望を検出した場合、承認後に自動的に停止リストに追加されます。
停止リストの確認・管理
Step1の「停止リスト一覧」で以下が可能です:
- 検索: メールアドレスで検索
- 選択削除: チェックボックスで選択して削除
- CSVエクスポート: 停止リストをCSVファイルでダウンロード
- Firebase同期: チーム間で共有
送信時の動作
Step3の送信リストでは、停止リスト該当者は赤背景で表示されます。
🔍 返信監視 NEW
バウンスメール(配信失敗)や配信停止希望を自動的に検出する機能です。
監視対象
- バウンス: 配信不能、送信エラー、アドレス不明など
- 配信停止: 購読解除、配信停止希望など
使い方
返信監視を開く
ヘッダーの「返信監視」ボタンをクリック
監視する送信元アドレスを選択
自分のメールアドレスまたは共有メールボックスを選択
スキャン実行
「スキャン開始」ボタンをクリック。送信済みフォルダと受信トレイをスキャンします。
検出結果を確認
検出されたメールが一覧表示されます:
- メールアドレス
- 種別(バウンス/配信停止)
- 検出理由
- メッセージ内容
承認または却下
- 承認: 停止リストに追加
- 却下: 停止リストに追加しない
スキャン期間
前回のスキャン日時から現在までのメールをスキャンします。初回は過去7日間をスキャンします。
「スキャン期間をリセット」ボタンで、再度過去7日間からスキャンできます。
🤖 AI生成機能
Dify APIを使用して、メール本文をAIで自動生成できます。
使い方
API Keyの設定(初回のみ)
Step2の「AI生成」ボタンをクリックすると、API Key設定画面が表示されます。管理者から取得したAPI Keyを入力してください。
生成条件を入力
| 項目 | 説明 |
|---|---|
| 用件 | メールの主な内容(例: 新製品のご案内) |
| 目的 | メールの目的(例: プロモーション、お知らせ) |
| トーン | 非常に丁寧 / ビジネス標準 / カジュアル |
| 言語 | 日本語 / 英語 / 中国語 |
| 出力形式 | HTML / プレーンテキスト |
| 追加要望 | その他の要望(例: {名前}プレースホルダーを含める) |
生成実行
「生成」ボタンをクリック。AIが文章を生成し、リアルタイムで表示されます。
確認・編集
生成された文章を確認し、必要に応じて編集してください。「採用」ボタンで本文に挿入されます。
📊 開封トラッキング
メールの開封状況をリアルタイムで追跡する機能です。
仕組み
メール本文に透明な1x1ピクセル画像(トラッキングピクセル)を埋め込みます。受信者がメールを開くと、画像が読み込まれ、開封として記録されます。
設定方法
- Step2で「開封追跡を有効にする」をチェック
- 通常通りメールを送信
- 開封情報は自動的にFirestoreに記録される
開封状況の確認
(将来のアップデートで実装予定)
- 画像を表示しないメールクライアントでは検出できません
- プレビュー表示でも開封とカウントされる場合があります
- プライバシー保護機能により、正確性が低下する場合があります
📋 アンケート機能 NEW
メール送信と連携したアンケート機能で、受信者からフィードバックを収集できます。
アンケートの作成
アンケートタブを開く
ヘッダーの「アンケート」タブをクリックします。
新規作成
「新規作成」ボタンをクリックし、アンケートのタイトルと説明を入力します。
質問を追加
質問タイプを選択して質問を追加します。上下移動ボタンで順序を変更できます。
質問タイプ
| タイプ | 説明 |
|---|---|
| 単一選択 | ラジオボタンで1つだけ選択 |
| 複数選択 | チェックボックスで複数選択可能 |
| テキスト | 短い自由記述(検証ルール設定可能) |
| 長い回答 | 長文の自由記述(テキストエリア) |
| 評価 | 1〜5のスター評価 |
| 日付 | カレンダーから日付を選択 |
テキスト検証ルール
テキスト質問には入力検証を設定できます:
- メールアドレス形式: 有効なメール形式かチェック
- 数値のみ: 数字のみ入力可能
- 電話番号形式: 電話番号形式かチェック
- URL形式: 有効なURL形式かチェック
メールへの埋め込み
メール本文に {surveyUrl} プレースホルダーを追加すると、各受信者固有のアンケートURLが自動挿入されます。
以下のリンクからアンケートにご回答ください。
{surveyUrl}
結果の確認
- アンケートタブで対象のアンケートを選択
- 「ダッシュボード」で回答状況を確認(回答率、回答数のグラフ、質問ごとの分布)
- 送信履歴から各受信者の回答状況を追跡
回答状況の追跡
| 状態 | 説明 |
|---|---|
| 回答済 | アンケートに回答完了 |
| 未回答 | まだ回答していない |
👥 顧客管理 NEW
顧客リストを一元管理し、メール配信履歴・開封状況・アンケート回答を追跡できます。
顧客管理画面へのアクセス
メール配信画面のヘッダーにある「顧客管理」リンクをクリック、または直接 customer.html にアクセスします。
顧客データの標準項目
| 項目 | 説明 |
|---|---|
| メールアドレス | 必須。顧客の識別キー |
| 氏名 | 顧客名(姓・名を別々にインポート可能) |
| 会社名 | 所属会社 |
| 部署 | 所属部署 |
| 役職 | 役職 |
| 電話番号 | 連絡先電話番号 |
| 住所 | 住所 |
| メモ | 自由記述メモ |
顧客のインポート
CSVファイルの読み込み
「インポート」ボタンをクリックし、CSVファイルをドラッグ&ドロップまたは選択します。
列のマッピング
CSVの列を標準項目に対応付けます。「姓」「名」が別列の場合は、それぞれマッピングすると自動的に「氏名」に結合されます。
タグ列マッピング(任意)
CSVの列値が「1」の場合にタグを自動付与できます。例:「is_vip」列が「1」の行に「VIP」タグを付与。
プレビューとインポート実行
新規/既存/重複の件数を確認し、インポートモードを選択して実行します。
- 新規のみ追加: 既存メールアドレスはスキップ
- 既存も更新: 既存データを上書き(確認ダイアログあり)
タグ管理
顧客をグループ分けするタグ機能:
- 「タグ管理」タブで新規タグを作成(名前と色を設定)
- 顧客編集時にタグを割り当て
- 顧客一覧でタグによる絞り込み
顧客一覧の機能
| 機能 | 説明 |
|---|---|
| 検索 | メールアドレス、氏名、会社名で検索 |
| タグフィルター | 特定のタグを持つ顧客のみ表示 |
| ソート | 各列のヘッダーをクリックでソート |
| 表示件数 | 20/50/100/200件から選択 |
統計表示
顧客一覧に以下の統計を表示:
- 送信: メール送信回数(クリックで履歴表示)
- 開封: メール開封回数 / 送信回数
- 回答: アンケート回答数
一括操作
複数の顧客を選択して一括操作:
- 📧 メール送信: 選択した顧客をメール送信画面へ
- 🗑️ 削除: 選択した顧客を一括削除(確認ダイアログあり)
🔧 トラブルシューティング
ログインできない
| 症状 | 原因 | 解決策 |
|---|---|---|
| ポップアップが表示されない | ポップアップブロック | ブラウザでポップアップを許可 |
| AADSTS50011エラー | リダイレクトURIの不一致 | 管理者にAzure ADの設定を確認依頼 |
| AADSTS65001エラー | 管理者の同意が必要 | 管理者にAPI権限の承認を依頼 |
メール送信に失敗する
| 症状 | 原因 | 解決策 |
|---|---|---|
| 401エラー | トークン期限切れ | 再ログイン |
| 429エラー | レート制限 | しばらく待ってから再送信 |
| 特定のアドレスにエラー | メールアドレスが無効 | アドレスを確認・修正 |
テンプレートが表示されない
- ブラウザコンソール(F12)でエラーを確認
- 「🔄 更新」ボタンをクリックして再読み込み
- Firebaseの接続状態を確認
- ページを再読み込み(Ctrl+R)
CSV読み込みエラー
- 文字コードがUTF-8またはShift-JISか確認
- CSVの形式が正しいか確認(カンマ区切り)
- 特殊文字が含まれていないか確認
- ファイルが破損していないか確認
AI生成が動作しない
- API Keyが正しく設定されているか確認
- ローカル開発の場合、
local_proxy.jsが起動しているか確認 - ブラウザコンソールでCORSエラーがないか確認
- Dify APIのステータスを確認
❓ よくある質問(FAQ)
Q1. 一度に何件まで送信できますか?
A: 技術的な制限はありませんが、Microsoft 365には以下の制限があります:
- 1日あたり10,000通まで
- 1分間に30通以上送信すると制限される場合があります
このシステムでは、送信間隔を500msに設定しており、1時間あたり約7,200通送信できます。
Q2. 送信中にブラウザを閉じてしまいました
A: 送信が中断されます。再度ログインし、送信済みの件数を確認してから、未送信分を再送してください。
Q3. 停止リストはどこに保存されますか?
A: Firebaseに保存され、チーム全体で共有されます。ブラウザのローカルストレージにもバックアップされます。
Q4. HTMLメールとテキストメールの違いは?
A:
- HTMLメール: 装飾(太字、色、リンク等)が可能。画像も埋め込み可能。
- テキストメール: プレーンテキストのみ。全てのメールクライアントで表示可能。
重要な連絡はテキスト、プロモーションはHTMLがおすすめです。
Q5. デジタルギフトは1回の送信で何件まで使えますか?
A: デジタルギフトCSVに登録されている件数まで使用できます。送信リストより少ない場合、ギフトがない受信者には空白が挿入されます。
Q6. テンプレートは何件まで保存できますか?
A: Firestoreの制限内であれば無制限です(実用上、数百件は問題ありません)。
Q7. 送信履歴はどのくらい保存されますか?
A: Firestoreに永続的に保存されます。必要に応じて古い履歴は手動で削除できます。
Q8. 複数のメールアドレスから送信できますか?
A: はい。以下の条件を満たせば可能です:
- 共有メールボックスへのアクセス権限がある
- Azure ADで
Mail.Send.Shared権限が許可されている
Q9. プレースホルダーが置換されません
A: 以下を確認してください:
- プレースホルダーの形式が
{列名}になっているか - 列名がCSVのヘッダーと完全一致しているか(大文字小文字も区別)
- 全角の中括弧ではなく、半角の
{}を使用しているか
Q10. スマートフォンでも使えますか?
A: 基本的な機能は使えますが、PC/タブレットの使用を推奨します。特に大量送信時はPC推奨です。
Q11. アンケートの回答期限は設定できますか?
A: 現在、回答期限の設定機能はありません。必要に応じてメール本文で回答期限を案内してください。
Q12. 顧客データは何件まで登録できますか?
A: Firestoreの制限内であれば無制限です。実用上、数万件は問題なく管理できます。
Q13. CSVインポートで姓と名が別の列になっている場合は?
A: 列マッピング画面で「姓」と「名」をそれぞれ選択すると、自動的に「氏名」フィールドに結合されます。「山田」+「太郎」→「山田 太郎」
Q14. 顧客にタグを自動で付けたい場合は?
A: CSVインポート時の「タグ列マッピング」機能を使用します。例えば、CSVの「is_vip」列が「1」の行に「VIP」タグを自動付与できます。
📞 サポート
ご不明な点やトラブルがある場合は、以下にお問い合わせください。
現在のバージョン: v4.6.0
最終更新: 2026年1月26日