メール一括送信プラグイン
会員および注文検索結果に対して、WYSIWYGリッチテキストエディタ・変数挿入・分割非同期送信・予約送信・開封レポート機能を備えた高機能メール配信システムです。
1 プラグイン概要
メール一括送信プラグインは、EC-CUBE 4.2 / 4.3の管理画面から顧客へのダイレクトメール(DM)やメールマガジン、新着情報、クーポン案内などを直感的に送信・管理できるプラグインです。
大量送信時におけるサーバータイムアウト(504 Gateway Timeout)を防ぐ分割非同期送信を標準搭載しているため、数百件〜数万件規模の会員宛てにも安全かつ確実にメールを配信できます。
- 開封レポート機能: 配信したメールの開封率サマリーおよび個別の開封日時・回数をリアルタイム追跡
- テンプレート複製: 既存テンプレートをワンクリックで複製(添付ファイルも自動複製)
- 送信履歴クリア: 30日/60日/90日/180日/365日以前または全件のログを一括削除
- 新変数 {{order_no}}: 受注者リスト向け配信で最新の注文番号を自動埋め込み
2 主な機能
{{customer_name}} や {{point}}、{{order_no}} などの変数をメール本文や件名に自動差込。3 インストール・有効化
- 1ファイルを配置
プラグインディレクトリ
app/Plugin/SSendMail/に本プラグインのソースコードを配置します。 - 2管理画面で有効化
EC-CUBE管理画面にログインし、オーナーズストア > プラグイン > プラグイン一覧 から「メール一括送信プラグイン」の「有効化」をクリックします。
- 3データベース自動生成
有効化時に必要なテーブル(
plg_ssend_mail,plg_ssend_mail_open,plg_ssend_mail_schedule)が自動生成されます。
- EC-CUBE 4.2 / 4.3.x / PHP 8.1 以上
- MySQL 5.7+ または PostgreSQL 9.4+
- 「メルマガ希望者のみ」の絞り込み機能を利用する場合は、公式の メールマガジンプラグイン が必要です(未導入時も他条件での一括配信は問題なく動作します)。
4 メールテンプレート管理
管理画面メニュー メール送信管理 > テンプレート管理 からテンプレートの作成・編集・複製・削除が行えます。
登録・編集項目
| 項目名 | 必須 | 説明 |
|---|---|---|
| テンプレート名 | 必須 | 管理上の識別名(例:「新春初売りセールDM」「会員登録御礼」) |
| メールタイトル | 必須 | 送信されるメールの件名。{{customer_name}} などの変数が使用可能です。 |
| メール内容 | 必須 | メール本文。Summernote Lite WYSIWYGエディタにより文字装飾や画像挿入が可能です。 エディタ上部の「変数挿入ボタン」をクリックすると、カーソル位置に変数が自動挿入されます。 |
| 添付ファイル | 任意 | PDFや画像等(最大3MB)。登録済みの添付ファイルは個別に削除も可能です。 |
テンプレートの複製機能
一覧画面または編集画面で「複製」ボタンをクリックすると、件名・本文・添付ファイルを引き継いだ新しいテンプレートが即座に生成されます。季節ごとのDMや定期連絡のベース作成に便利です。
5 メール一括送信機能
管理画面メニュー メール送信管理 > メール送信 から対象顧客の絞り込みとメール送信を行います。
送信までの流れ
- 絞り込み検索: 都道府県・会員種別・購入回数・メルマガ購読希望などで送信対象を絞り込みます。
- テンプレート選択: 事前に作成したテンプレートをドロップダウンから選択します。
- プレビュー確認: 「プレビュー」ボタンを押し、実際の差込変数が置換された文面を確認します。
- 一括送信実行: 「送信」ボタンを押すと送信モーダルが起動します。
(分割非同期送信)の仕組み
送信ボタンをクリックすると、システムが自動的に 10件ごとのチャンク(グループ) に分けてAJAX通信を実行します。
- プログレスバーで現在の送信進捗率(%)と「〇件中 〇件成功」をリアルタイム更新
- 送信中に誤って画面を閉じないよう、モーダル背景および閉じるボタンがロックされます
- 万が一エラー(宛先不整合・SMTPエラー等)が発生した場合、失敗したアドレスとエラー理由をモーダル内に即座に一覧表示
6 予約送信機能 (Cron連携)
送信画面で即時配信の代わりに「予約送信」を選択することで、指定した未来の日時に自動配信をスケジュールできます。
予約ステータス一覧
| ステータス | 説明 |
|---|---|
| pending | 送信待ち。指定日時になるまで待機中です。キャンセルが可能です。 |
| processing | 送信処理中。Cronジョブが現在配信を実行しています。 |
| completed | 送信完了。全件の送信処理が終了しました。 |
| failed | 送信失敗。システムエラー等で処理が中断しました。 |
| cancelled | キャンセル済み。管理者によって実行前に取り消されました。 |
Cronジョブの設定方法
サーバーの crontab に以下のコマンドを1分おきに実行するよう設定してください。
* * * * * php /path/to/eccube/bin/console ssendmail:schedule:run手動で予約キューを直ちに実行したい場合は、SSHターミナル等で以下のコマンドを実行します。
php bin/console ssendmail:schedule:run7 送信履歴&ログクリア
管理画面メニュー メール送信管理 > 送信履歴 で過去に配信したメールの履歴を閲覧・管理できます。
機能一覧
- メールアドレス別集計: 送信先のメールアドレスごとに送信件数・最終送信日時を一覧表示
- 詳細展開: 各行をクリックすると、送信日時・使用テンプレート・開封状況がアコーディオン表示されます
- 履歴のクリア機能: 画面右上の「履歴クリア」ボタンより、保存期間を超過した不要なログを削除可能
| クリアオプション | 削除対象 |
|---|---|
| 30日以上前のログ | 送信日時が30日以前の送信履歴・開封データを削除 |
| 60日 / 90日 / 180日 / 365日以上前 | 指定日数以前の送信履歴・開封データを削除 |
| 全件クリア | すべての送信履歴・開封ログを完全消去 |
8 開封レポート機能
管理画面メニュー メール送信管理 > 開封レポート では、配信したHTMLメールの開封率や個別の読者行動を追跡できます。
レポートの見方
HTMLメール本文の末尾に、1x1ピクセルの透明追跡イメージタグ(<img src="...">)が自動挿入されます。受信者がメールを開いて画像が読み込まれたタイミングで開封が記録されます。※プレーンテキスト形式のみのメールでは開封検知は行われません。
9 テンプレート変数一覧
メール件名および本文中で利用できる全12種類の動的変数です。送信時に個々の顧客情報へ自動置換されます。
| 変数タグ | 置換内容 | 出力例 | 備考 |
|---|---|---|---|
{{customer_name}} | 顧客名(姓+名) | 山田 太郎 様 | 基本 |
{{customer_email}} | メールアドレス | yamada@example.com | 基本 |
{{customer_id}} | 顧客ID | 1024 | 基本 |
{{shop_name}} | ショップ名 | CubeLab Shop | 基本 |
{{pref}} | 都道府県 | 東京都 | 拡張 |
{{address}} | 住所(市区町村+番地) | 渋谷区道玄坂1-2-3 | 拡張 |
{{phone}} | 電話番号 | 03-1234-5678 | 拡張 |
{{company_name}} | 会社名 | 株式会社CubeLab | 拡張 |
{{birth}} | 生年月日 | 1990-05-15 | 拡張 |
{{point}} | 所持ポイント | 500 | 拡張 |
{{last_buy_date}} | 最終購入日時 | 2026-07-20 14:30 | 拡張 |
{{buy_times}} | 累計購入回数 | 5 | 拡張 |
{{order_no}} | 最新注文番号 | 20260726-0001 | 受注者リスト送信専用 |
10 データベース&ファイル構成
テーブル構造
plg_ssend_mail: テンプレートデータ(件名、本文HTML、添付ファイル名等)plg_ssend_mail_open: 送信履歴および開封ログ(顧客ID、トークン、送信日時、開封日時等)plg_ssend_mail_schedule: 予約送信キュー(予定日時、ステータス、対象顧客ID JSON等)
添付ファイルの保存場所
アップロードされた添付ファイルは以下のディレクトリに保存されます。
html/upload/mail_attachments/ファイル名は衝突防止のためユニークコードが付与されます:
mail_{uniqid}_{元のファイル名} (例: mail_67890abc12345.98765432_catalog.pdf)11 FAQ & トラブルシューティング
本プラグインは送信処理を10件ずつの非同期通信に分割して実行するため、大量送信時でもGateway Timeoutが発生することはありません。
サーバーのCron設定をご確認ください。php bin/console ssendmail:schedule:run が定期実行されていない場合、予約メールは送信されません。また、PHPの実行パスやパーミッションもご確認ください。
受信者のメールソフトが「外部画像の自動読み込み」をブロックしている場合や、プレーンテキスト形式で購読されている場合は開封トラッキングピクセルが読み込まれません。