スタッフブログ

  • 最新配信
  • RSS

XOOPS Cubeのメール送信を拡張する。preload "RyusExmailString"

Ryuji : XOOPS » プリロード 2009/5/13 15:43

Blogger's Avatar

XOOPS Cube Legacyのユーザモジュールにメール一括配信をする「メールジョブ管理」というメニューがあります。

このメールジョブ管理からメール(PM送信も可能)を送るときに、本文に特殊な記述をすることで、送信先ユーザのアカウント名やメールアドレスなどを本文にうめこむことが可能です。

現在(XOOPS Cube Legacy 2.1.6a)で使えるようになってるのは下記の3つです。

タグ説明
{X_UID} 送信先ユーザのユーザID
{X_UNAME} 送信先ユーザのユーザ名(アカウント名)
{X_UEMAIL} 送信先ユーザのメールアドレス

もし他にも一括配信メールにいろいろ埋め込みたい場合は、preloadでこれを拡張できるようになっています。

というわけで、埋め込みタグを拡張するpreloadのサンプルを作ってみました。

RyusExmailString

サンプルで追加したタグは次の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 オフィシャルサイト日本語フォーラムに要望だしておいたので、もし採用されれば使えるようになります。(もちろん自力で直してしまっても使えるようになります)

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.