EC-CUBE 4.2 / 4.3 対応

メール一括送信プラグイン

会員および注文検索結果に対して、WYSIWYGリッチテキストエディタ・変数挿入・分割非同期送信・予約送信・開封レポート機能を備えた高機能メール配信システムです。

最新バージョン: v1.5.0
対象環境: EC-CUBE 4.2 / 4.3.x / PHP 8.1+

1 プラグイン概要

メール一括送信プラグインは、EC-CUBE 4.2 / 4.3の管理画面から顧客へのダイレクトメール(DM)やメールマガジン、新着情報、クーポン案内などを直感的に送信・管理できるプラグインです。

大量送信時におけるサーバータイムアウト(504 Gateway Timeout)を防ぐ分割非同期送信を標準搭載しているため、数百件〜数万件規模の会員宛てにも安全かつ確実にメールを配信できます。

バージョン 1.5.0 の新機能
  • 開封レポート機能: 配信したメールの開封率サマリーおよび個別の開封日時・回数をリアルタイム追跡
  • テンプレート複製: 既存テンプレートをワンクリックで複製(添付ファイルも自動複製)
  • 送信履歴クリア: 30日/60日/90日/180日/365日以前または全件のログを一括削除
  • 新変数 {{order_no}}: 受注者リスト向け配信で最新の注文番号を自動埋め込み

2 主な機能

WYSIWYGエディタ
Summernote Lite を搭載。文字装飾、カラー変更、リンク・画像挿入を直感的に行えるリッチテキスト編集をサポート。
分割非同期送信
送信対象を10件ずつのグループに分割し、AJAXで連続処理。タイムアウトエラーを根絶します。
予約送信 (Cron)
配信したい日時を指定して予約可能。コンソールコマンドとCronを連動させ夜間やイベント時の自動配信が可能。
開封レポート
HTMLメール内のトラッキングピクセルにより、テンプレート別の開封率プログレスバーや個別開封ログを可視化。
添付ファイル対応
PDFや画像などのファイルを最大3MBまで添付可能。テンプレート複製時にも添付ファイルを安全にコピー。
12種類の動的変数
{{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 メール一括送信機能

管理画面メニュー メール送信管理 > メール送信 から対象顧客の絞り込みとメール送信を行います。

送信までの流れ

  1. 絞り込み検索: 都道府県・会員種別・購入回数・メルマガ購読希望などで送信対象を絞り込みます。
  2. テンプレート選択: 事前に作成したテンプレートをドロップダウンから選択します。
  3. プレビュー確認: 「プレビュー」ボタンを押し、実際の差込変数が置換された文面を確認します。
  4. 一括送信実行: 「送信」ボタンを押すと送信モーダルが起動します。

(分割非同期送信)の仕組み

送信ボタンをクリックすると、システムが自動的に 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:run

7 送信履歴&ログクリア

管理画面メニュー メール送信管理 > 送信履歴 で過去に配信したメールの履歴を閲覧・管理できます。

機能一覧

  • メールアドレス別集計: 送信先のメールアドレスごとに送信件数・最終送信日時を一覧表示
  • 詳細展開: 各行をクリックすると、送信日時・使用テンプレート・開封状況がアコーディオン表示されます
  • 履歴のクリア機能: 画面右上の「履歴クリア」ボタンより、保存期間を超過した不要なログを削除可能
クリアオプション削除対象
30日以上前のログ送信日時が30日以前の送信履歴・開封データを削除
60日 / 90日 / 180日 / 365日以上前指定日数以前の送信履歴・開封データを削除
全件クリアすべての送信履歴・開封ログを完全消去

8 開封レポート機能

管理画面メニュー メール送信管理 > 開封レポート では、配信したHTMLメールの開封率や個別の読者行動を追跡できます。

レポートの見方

テンプレート別サマリー
各テンプレートの「総送信数」「開封数」「開封率(%)」をプログレスバーで視覚的に表示します。
個別開封ログ
テンプレート詳細を開くと、どの顧客がいつ・何回メールを開封したかのタイムスタンプ一覧を確認できます。
トラッキングの仕組み

HTMLメール本文の末尾に、1x1ピクセルの透明追跡イメージタグ(<img src="...">)が自動挿入されます。受信者がメールを開いて画像が読み込まれたタイミングで開封が記録されます。※プレーンテキスト形式のみのメールでは開封検知は行われません。

9 テンプレート変数一覧

メール件名および本文中で利用できる全12種類の動的変数です。送信時に個々の顧客情報へ自動置換されます。

変数タグ置換内容出力例備考
{{customer_name}}顧客名(姓+名)山田 太郎 様基本
{{customer_email}}メールアドレスyamada@example.com基本
{{customer_id}}顧客ID1024基本
{{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 & トラブルシューティング

Q. 一括送信時にサーバーエラー(504 Gateway Timeout)になりますか?

本プラグインは送信処理を10件ずつの非同期通信に分割して実行するため、大量送信時でもGateway Timeoutが発生することはありません。

Q. 予約送信が時間になっても実行されません。

サーバーのCron設定をご確認ください。php bin/console ssendmail:schedule:run が定期実行されていない場合、予約メールは送信されません。また、PHPの実行パスやパーミッションもご確認ください。

Q. 開封率が0%のまま上がりません。

受信者のメールソフトが「外部画像の自動読み込み」をブロックしている場合や、プレーンテキスト形式で購読されている場合は開封トラッキングピクセルが読み込まれません。