/**
  * コミュニティメンバへのメール送信(個別配信)
  *
  * ※各ユーザの言語設定に従ってタグをリプレースします。
  * ※システム設定のSMTPで送信します。
  * メッセージに対して以下のプレースフォルダを置換します。
  * {USER_COMMUNITY_NAME}
  * {SYSTEM_BASE_URL}
  * {SYSTEM_SCRIPT_PATH}
  * {SYSTEM_MODULE_ACCESSOR}
  * {SYSTEM_ACTION_ACCESSOR}
  * {COMMUNITY_ID}
  * {COMMUNITY_NAME}
  *
  * @param string $community_id コミュニティid
  * @param string $from 送信者
  * @param mixed $subject 配列の場合:件名(array([lang] => [件名]))
  *                   文字列の場合、全ての言語で同一の件名
  * @param mixed $msg 配列の場合:メッセージ本文(array([lang] => [本文]))
  *                   文字列の場合、全ての言語で同一のメッセージ本文
  * @param string $mmb_id_array 対象ユーザコミュニティid配列(未指定時は全員)
  * @return mixed true...正常/PearError オブジェクト...異常
  */
 static function send_community_mail($community_id, $from, $subject, $msg, $mmb_id_array = '')
 {
     // コミュニティメンバ全員の情報を取得
     $mmb_info_rows =& ACSCommunity::get_community_member_mail_address_row_array($community_id);
     // インデックスにユーザコミュニティidを使用した配列を生成
     $mmb_info_array = array();
     $is_all = $mmb_id_array == '' ? TRUE : FALSE;
     foreach ($mmb_info_rows as $mmb_info) {
         $mmb_info_array[$mmb_info['user_community_id']] = $mmb_info;
         if ($is_all) {
             $mmb_id_array[] = $mmb_info['user_community_id'];
         }
     }
     // 言語種類別にシステム関連プレースフォルダの置換
     $msg_lang = array();
     $lang_list =& ACSMsg::get_lang_list_array();
     foreach ($lang_list as $lang => $lang_disp) {
         $msg_lang[$lang] = ACSCommunityMail::get_community_tag_replace($community_id, is_array($msg) ? $msg[$lang] : $msg);
     }
     // 対象ユーザにメールを送信
     if (is_array($mmb_id_array)) {
         foreach ($mmb_id_array as $mmb_id) {
             $mmb_info =& $mmb_info_array[$mmb_id];
             $lang = $mmb_info['mail_lang'] == '' ? ACS_DEFAULT_LANG : $mmb_info['mail_lang'];
             $mmb_msg = $msg_lang[$lang];
             $mmb_subject = is_array($subject) ? $subject[$lang] : $subject;
             // 名前プレースフォルダの置換
             $mmb_msg = ACSMsg::get_tag_replace($mmb_msg, array('{USER_COMMUNITY_NAME}' => $mmb_info['user_community_name']));
             $ret = ACSLib::send_mail($from, $mmb_info['mail_address'], '', $mmb_subject, $mmb_msg, array('Sender' => $from));
             if (Pear::IsError($ret)) {
                 return $ret;
             }
         }
     }
     return true;
 }