メールマガジン配信機能 (EmailMagazineプラグイン)

EmailMagazineプラグインは、メルマガ購読者・メンバーなどを対象にメールマガジンを作成・配信する機能を提供します(オプションの別売りのプラグインです)。

用語の定義

  • メルマガ購読者 = プラグインによって追加されるモデルの一つ(emailsubscriber)で、メールアドレスを登録してメールマガジンを購読するユーザーのこと。
  • メンバー = 会員、memberモデルのオブジェクトのこと。PowerCMS Xの管理画面ユーザーとは別のモデルとなります。
  • メールテンプレート(メールひな形) = プラグインによって追加されるモデルの一つ(emailboilerplate)で、メールマガジンの本文部分、または HTMLメールの bodyの外側の HTMLを登録します。
  • メールマガジン = プラグインによって追加されるモデルの一つ(emailnewsletter)で、配信するメールマガジンを登録します。

メールが配信されるタイミング

ステータスが「配信予約」の時、配信日時を過ぎて定期実行タスク(tools/worker.php)が実行されたタイミングで配信されます。
ステータスが「配信」の時、配信対象のメールアドレス数が環境変数「emailmagazine_realtime(初期値は30)」以内の場合はオブジェクトの保存時に、それ以上の時は一度「ジョブ」「キュー」に保存され、次に定期実行タスク(tools/worker.php)が実行されたタイミングで配信されます。

設置とインストール

  • pluginsディレクトリに EmailMagazineディレクトリを設置します。
  • システムのプラグインの管理画面で、EmailMagazineにチェックを入れて有効化します。
  • スキーマ管理画面から「emailboilerplate」「emailnewsletter」「emailsubscriber」モデルを選択してアップグレードします。

環境変数

変数名 説明 初期値
emailmagazine_filter_opt_in モデルにカラム「opt_in」が存在する時、メールマガジンの作成・編集画面のメールアドレスの選択ダイアログで値のあるメールアドレスのみをフィルタリング true
emailmagazine_filter_status モデルにカラム「status」が存在する時、メールマガジンの作成・編集画面のメールアドレスの選択ダイアログでステータスが有効/公開状態のメールアドレスのみをフィルタリング true
emailmagazine_filter_delete_flag モデルにカラム「delete_flag」が存在する時、メールマガジンの作成・編集画面のメールアドレスの選択ダイアログでフラグの付いていないメールアドレスのみをフィルタリング true
emailmagazine_filter_lock_out モデルにカラム「lock_out」が存在する時、メールマガジンの作成・編集画面のメールアドレスの選択ダイアログでロックアウトされていないメールアドレスのみをフィルタリング true
emailmagazine_filter_reg_workspace_id モデルにカラム「reg_workspace_id」が存在する時(memberモデルなど)、メールマガジンの作成・編集画面のメールアドレスの選択ダイアログで、スコープの一致するメールアドレスのみをフィルタリング false
emailmagazine_filter_workspace_ids モデルにリレーション型のカラム「workspace_ids」が存在する時、メールマガジンの作成・編集画面のメールアドレスの選択ダイアログで、スコープの一致するメールアドレスのみをフィルタリング true
get_built_emailboilerplate メールテンプレートをメールマガジンに適用する時、メールテンプレートに含まれている MTタグをビルドしてから適用 false
emailboilerplate_build_brace 「get_built_emailboilerplate」が trueの時、{{mt:タグ名}}で記述された MTタグをビルドするかどうかを指定 false
emailmagazine_realtime ステータスが「配信」の時、配信対象のメールアドレス数がこの数値以内の場合はオブジェクトの保存時に、それ以上の時は一度「ジョブ」「キュー」に保存され、次に定期実行タスク(tools/worker.php)が実行されたタイミングで配信 30
emailmagazine_require_agreement メールマガジンの購読申込画面で、「__agree」パラメタを必須にする true

プラグイン設定

プラグイン「メールマガジン」の設定画面

  • モデル : メールマガジンの作成・編集画面からユーザーのメールアドレスを選択することができる対象のモデルをチェックします。デフォルトでは「メルマガ購読者」と「メンバー」が対象です。
  • メールのFrom : メールマガジンの メールのFrom に指定がない時、このアドレスがメールの Fromヘッダにセットされます。ここに指定がない時は、システムのメールアドレスが Fromアドレスとなります。
  • 利用規約・プライバシーポリシーのURL : 購読申し込み画面のテンプレートで、変数「terms_and_privacy」に値がセットされます。
  • 購読・購読解除のセッション有効期限(秒) : 購読・購読解除の画面からメールを送信した後、メールの一時 URLをクリックして操作を実行するまでのセッション有効期限を指定します。

メールマガジンの作成・テスト・配信

新しいメールマガジン

  • 配信したいスコープの「コミュニケーション」メニューから「メールマガジン」を選択し、一覧画面上部の「新しいメールマガジン」をクリックするか、作成済みのメールマガジンを選択して下さい。
  • 件名を入力し、テキスト形式か HTML形式かをラジオボタンで選択します。件名と本文には MTタグが利用可能※です。
  • メールの本文を入力するか、メールテンプレートを選択して、内容を編集します。メールテンプレートに登録された有効なオブジェクトがない場合、選択ドロップダウンメニューは表示されません。
  • メールのFrom 欄に送信元メールアドレスを入力します。省略可能です。
  • 必要に応じて「タグ」付けをします。
  • メールアドレスを選択または入力します。モデルの「選択...」ボタンをクリックして、ダイアログからメールアドレスを選択した時、そのメールアドレスのオブジェクトのコンテキストがセットされ、MTタグを使ってそのオブジェクトの情報をメールに含めることができます。メールアドレスは必須です。
  • 「メールプレビュー」をクリックすると、送信されるメールをブラウザでプレビュー表示できます。
  • 「テスト送信」をクリックすると、送信先メールアドレスを入力するプロンプトが表示されます(初期値はログインユーザーのメールアドレス)。「OK」をクリックするとテストメールを送信します。
  • ステータス、配信日をセットして、オブジェクトを保存してください。

※ リッチテキストエディタで MTタグを入力することはできません。リッチテキストエディタで MTタグを利用するには、「<」「>」の代わりに「{{」「}}」を使って下さい。
 例 : <mt:date> は、 {{mt:date}}とすることができます。ファンクションタグの先頭と末尾の「$」は利用できません({{$mt:date$}}は処理されません)。

※ 選択されたメールアドレスに対応する配信対象のモデル(メールアドレス欄の下のドロップダウンメニューの選択されているモデル)のオブジェクトのコンテキストがセットされ、利用することができます。
 例 : メンバーが選択されているとき、「<mt:membernickname>」はメンバーの表示名に置き換わります。

メールテンプレートの作成と利用

新しいメールテンプレート

クラス「本文」

メールマガジンの本文部分、リッチテキストまたはテキストエリアのひな形を登録します。ひな形の適用はメールマガジンに対して1つのみ可能です。

部分的に適用したいひな形はプラグイン「TinyMCE」の「エディタひな形」を利用してください。

クラス「HTMLテンプレート」

HTMLの <body></body> タグ及びその外側のHTMLソースを登録します。

デフォルトのHTMLテンプレートは以下の通りです(指定のない時はこのテンプレートが使われます)。

<html>
  <head>
    <title><mt:emailnewslettersubject _eval="1"></title>
  </head>
  <body>
    <mt:emailnewsletterbody _eval="1">
  </body>
</html>

※ 「_eval」モディファイアは「eval」モディファイアと異なり、{{mtタグ名}}形式の記述をサポートします。

メールマガジンのバックナンバーの HTMLページとしての公開

メールマガジンのバックナンバーをウェブページとして公開する機能はありませんが、ビューを作成して、モデル「メールマガジン」に対応する URLマップを作成することで、他のモデルと同様にウェブサイト上にページを公開することができます。
ページが出力されるのはステータスが配信(配信済)のもののみが対象となります。メールマガジン毎にアーカイブを出力するかしないかを制御するには、真偽値型のカラムなどを追加するなどして、URLマップの分岐で、ページ出力されないメールマガジンのURLマップが空文字になるように設定して下さい。

アプリケーション

http://example.com/powercmsx/plugins/EmailMagazine/app/pt-emailmagazine.php

必要に応じて別の場所に移動してください。

アプリケーションメソッド

各リクエストには workspace_id(スコープ)を指定することができます。

pt-emailmagazine.php?__mode=subscribe

購読申し込み画面を表示し、メルマガ購読申し込みを受け付けます。送信されたメールの一時URLをクリックすることで、登録が完了します。

pt-emailmagazine.php?__mode=unsubscribe

購読解除画面を表示し、メルマガ購読購読解除を受け付けます。送信されたメールの一時URLをクリックすることで、購読解除が完了します。

アプリケーションメソッドに対応するビュー(テンプレート)

対象のスコープに該当するベースネームと一致するビュー(クラスが「メールマガジン」指定のビュー)がある時、それが使われます。ない場合は、plugins/EmailMagazine/tmpl配下のテンプレートが利用されます。

  • emailmagazine_subscribe.tmpl : 購読申し込み画面用
  • emailmagazine_do_subscribe.tmpl : 購読申し込み完了画面用
  • emailmagazine_unsubscribe.tmpl : 購読解除画面用
  • emailmagazine_do_unsubscribe.tmpl : 購読解除完了画面用

テンプレート・タグ

ファンクションタグ

mt:emailcountbyboilerplate

送信済みのメールマガジン数をメールテンプレートごとにカウントします。
タグ属性「column」でカウント対象のカラム名(省略時「body_boilerplate_id」)、タグ属性「include_draft」指定で「配信」以外のステータスのものを含みます。