スタッフブログ
XOOPS Cube Legacyのユーザモジュールにメール一括配信をする「メールジョブ管理」というメニューがあります。
このメールジョブ管理からメール(PM送信も可能)を送るときに、本文に特殊な記述をすることで、送信先ユーザのアカウント名やメールアドレスなどを本文にうめこむことが可能です。
現在(XOOPS Cube Legacy 2.1.6a)で使えるようになってるのは下記の3つです。
タグ | 説明 |
---|---|
{X_UID} | 送信先ユーザのユーザID |
{X_UNAME} | 送信先ユーザのユーザ名(アカウント名) |
{X_UEMAIL} | 送信先ユーザのメールアドレス |
もし他にも一括配信メールにいろいろ埋め込みたい場合は、preloadでこれを拡張できるようになっています。
というわけで、埋め込みタグを拡張するpreloadのサンプルを作ってみました。
サンプルで追加したタグは次の2つです
タグ | 説明 |
---|---|
{X_NAME} | 送信先ユーザの「本名(記入されてなければユーザ名)」 |
{X_TODAY} | 今日の日付 |
このファイル内で実際に置き換えを実行しているのは、下記の部分になりますので、ここをお好みにあわせて変更していただければ、いくらでも好きなタグを定義できます。
/** * * @param $t_body string メール本文 * @param $to_user XoopsUser 送り先 * @param $from_user XoopsUser 送信者 * @return void */ function _replace(& $string, &$to_user, &$from_user) { /* * ここに置き換えを追加すれば、本文もタイトルでも置き換えタグを拡張できます。 */ $to_user_name = $to_user->get('name'); $to_user_name = empty($to_user_name) ? $to_user->get('uname') : $to_user_name; $string = str_replace('{X_NAME}', $to_user_name, $string); $string = str_replace('{X_TODAY}', formatTimestamp(time(), 's', $to_user->get('timezone_offset')), $string); }
メールの件名も置き換えたかったんですが、こちらはXOOPS Cube Legacy2.1.6aでは、デリゲートの宣言はあったのですが、実際には呼び出されてなかったため機能しませんでした。
XOOPS Cube オフィシャルサイト日本語フォーラムに要望だしておいたので、もし採用されれば使えるようになります。(もちろん自力で直してしまっても使えるようになります)