Index: /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail_Sendmail.php
===================================================================
--- /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail_Sendmail.php	(revision 18284)
+++ /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail_Sendmail.php	(revision 18631)
@@ -34,5 +34,5 @@
 class LC_Page_Admin_Mail_Sendmail extends LC_Page {
     
-	var $objMail;
+    var $objMail;
     // }}}
     // {{{ functions
@@ -44,13 +44,13 @@
      */
     function init() {
-    	 // SC_SendMailの拡張
-	    if(file_exists(MODULE_PATH . "mdl_speedmail/SC_SpeedMail.php")) {
-	        require_once(MODULE_PATH . "mdl_speedmail/SC_SpeedMail.php");
-	        // SpeedMail対応
-	        $this->objMail = new SC_SpeedMail();
-	    } else {
-	        $this->objMail = new SC_SendMail_Ex();
-	    }
-    	
+         // SC_SendMailの拡張
+        if (file_exists(MODULE_PATH . "mdl_speedmail/SC_SpeedMail.php")) {
+            require_once(MODULE_PATH . "mdl_speedmail/SC_SpeedMail.php");
+            // SpeedMail対応
+            $this->objMail = new SC_SpeedMail();
+        } else {
+            $this->objMail = new SC_SendMail_Ex();
+        }
+
         parent::init();
     }
@@ -63,60 +63,59 @@
     function process() {
         $conn = new SC_DbConn();
+        $objQuery = new SC_Query();
         $objSite = new SC_SiteInfo($conn);
 
-        if(MELMAGA_SEND != true) {
+        if (MELMAGA_SEND != true) {
             exit;
         }
 
-        //リアルタイム配信モードがオンのとき
-        if($_GET['mode'] == 'now') {
-            //----　未送信データを取得する
-            $time_data = $conn->getAll( "SELECT send_id FROM dtb_send_history  WHERE complete_count = 0 AND del_flg = 0 AND end_date IS NULL ORDER BY send_id ASC, start_date ASC" );
+        $where = 'del_flg = 0';
+        $sqlval = array();
+        // リアルタイム配信モードがオンのとき
+        if ($_GET['mode'] == 'now') {
+            // 指定データを取得する
+            $where .= ' AND send_id = ?';
+            $sqlval[] = $_GET['send_id'];
+            if ($_GET['retry'] != 'yes') {
+                $where .= ' AND complete_count = 0 AND end_date IS NULL';
+            }
         } else {
+            $where .= ' AND end_date IS NULL';
             // postgresql と mysql とでSQLをわける
             if (DB_TYPE == "pgsql") {
-                $sql = "SELECT send_id FROM dtb_send_history  ";
-                $sql.= "WHERE start_date  BETWEEN current_timestamp + '- 5 minutes' AND current_timestamp + '5 minutes' AND del_flg = 0  AND end_date IS NULL ORDER BY send_id ASC, start_date ASC";
-            }else if (DB_TYPE == "mysql") {
-                $sql = "SELECT send_id FROM dtb_send_history  ";
-                $sql.= "WHERE start_date  BETWEEN date_add(now(),INTERVAL -5 minute) AND date_add(now(),INTERVAL 5 minute) AND del_flg = 0  AND end_date IS NULL ORDER BY send_id ASC, start_date ASC";
+                $where .= "start_date BETWEEN current_timestamp + '- 5 minutes' AND current_timestamp + '5 minutes'";
+            } else if (DB_TYPE == "mysql") {
+                $where .= "start_date BETWEEN date_add(now(),INTERVAL -5 minute) AND date_add(now(),INTERVAL 5 minute)";
             }
-            //----　30分毎にCronが送信時間データ確認
-            $time_data = $conn->getAll($sql);
+            // 30分毎にCronが送信時間データ確認
         }
+        $objQuery->setorder('send_id');
+        $arrMailList = $objQuery->select('*', 'dtb_send_history', $where, $sqlval);
+        $objQuery->setorder('');
 
-        //未送信メルマガの数
-        $count = count($time_data);
-
-        //未送信メルマガがあれば送信処理を続ける。なければ中断する。
-        if( $count > 0 ){
-            print("start sending <br />\n");
-        } else {
-            print("not found <br />\n");
+        // 未送信メルマガがあれば送信処理を続ける。なければ中断する。
+        if (empty($arrMailList)) {
+            echo "not found\n";
             exit;
         }
 
-        //---- メール送信準備
-        for( $i = 0; $i < $count; $i++ ) {
+        echo "start sending\n";
+
+        // メール生成と送信
+        foreach ($arrMailList as $arrMail) {
+            $sendFlag = null;
+
             // 送信先リストの取得
-            $sql = "SELECT * FROM dtb_send_customer WHERE send_id = ? AND (send_flag = 2 OR send_flag IS NULL)";
-            $list_data[] = $conn->getAll( $sql, array( $time_data[$i]["send_id"] ) );
-            // 送信先データの取得
-            $sql = "SELECT * FROM dtb_send_history WHERE send_id = ?";
-            $mail_data[] = $conn->getAll( $sql, array( $time_data[$i]["send_id"] ) );
-        }
+            $arrDestinationList = $objQuery->select(
+                '*',
+                'dtb_send_customer',
+                'send_id = ? AND (send_flag = 2 OR send_flag IS NULL)',
+                array($arrMail["send_id"])
+            );
 
-        //---- 送信結果フラグ用SQL
-        $sql_flag ="UPDATE dtb_send_customer SET send_flag = ? WHERE send_id = ? AND customer_id = ?";
+            foreach ($arrDestinationList as $arrDestination) {
 
-        //----　メール生成と送信
-        for( $i = 0; $i < $count; $i++ ) {
-            for( $j = 0; $j < count( $list_data[$i] ); $j ++ ) {
-                $customerName = "";
-                $mailBody = "";
-                $sendFlag = "";
-
-                //-- 顧客名の変換
-                $name = trim($list_data[$i][$j]["name"]);
+                // 顧客名の変換
+                $name = trim($arrDestination["name"]);
 
                 if ($name == "") {
@@ -125,59 +124,62 @@
 
                 $customerName = htmlspecialchars($name);
-                $subjectBody = ereg_replace( "{name}", $customerName , $mail_data[$i][0]["subject"] );
-                $mailBody = ereg_replace( "{name}", $customerName ,  $mail_data[$i][0]["body"] );
+                $subjectBody = ereg_replace("{name}", $customerName, $arrMail["subject"]);
+                $mailBody = ereg_replace("{name}", $customerName, $arrMail["body"]);
 
                 $this->objMail->setItem(
-                                                $list_data[$i][$j]["email"]
-                                               ,$subjectBody
-                                               ,$mailBody
-                                               ,$objSite->data["email03"]                  //　送信元メールアドレス
-                                               ,$objSite->data["shop_name"]                //　送信元名
-                                               ,$objSite->data["email03"]                  //　reply_to
-                                               ,$objSite->data["email04"]                  //　return_path
-                                               ,$objSite->data["email04"]                  //　errors_to
-                                    );
+                    $arrDestination["email"],
+                    $subjectBody,
+                    $mailBody,
+                    $objSite->data["email03"],      // 送信元メールアドレス
+                    $objSite->data["shop_name"],    // 送信元名
+                    $objSite->data["email03"],      // reply_to
+                    $objSite->data["email04"],      // return_path
+                    $objSite->data["email04"]       // errors_to
+                );
 
-                //-- テキストメール配信の場合
-                if( $mail_data[$i][0]["mail_method"] == 2 ) {
+                // テキストメール配信の場合
+                if ($arrMail["mail_method"] == 2) {
                     $sendResut = $this->objMail->sendMail();
-                //--  HTMLメール配信の場合
+                // HTMLメール配信の場合
                 } else {
                     $sendResut = $this->objMail->sendHtmlMail();
                 }
 
-                //-- 送信完了なら1、失敗なら-1をメール送信結果フラグとしてDBに挿入
-                if( ! $sendResut ){
-                    $sendFlag = "-1";
+                // 送信完了なら1、失敗なら2をメール送信結果フラグとしてDBに挿入
+                if (!$sendResut) {
+                    $sendFlag = '2';
                 } else {
-                    $sendFlag = "1";
+                    $sendFlag = '1';
 
                     // 完了を 1 増やす
                     $sql = "UPDATE dtb_send_history SET complete_count = complete_count + 1 WHERE send_id = ?";
-                    $conn->query( $sql, array($mail_data[$i][0]["send_id"]));
+                    $conn->query($sql, array($arrMail["send_id"]));
                 }
-                $conn->query( $sql_flag, array( $sendFlag, $mail_data[$i][0]["send_id"], $list_data[$i][$j]["customer_id"] ) );
+
+                // 送信結果フラグ
+                $sql ="UPDATE dtb_send_customer SET send_flag = ? WHERE send_id = ? AND customer_id = ?";
+                $conn->query($sql, array($sendFlag, $arrMail["send_id"], $arrDestination["customer_id"]));
             }
 
-            //--- メール全件送信完了後の処理
+            // メール全件送信完了後の処理
             $completeSql = "UPDATE dtb_send_history SET end_date = now() WHERE send_id = ?";
-            $conn->query( $completeSql, array( $time_data[$i]["send_id"] ) );
+            $conn->query($completeSql, array($arrMail["send_id"]));
 
-            //---　送信完了　報告メール
-            $compSubject =  date("Y年m月d日H時i分" . "  下記メールの配信が完了しました。" );
+            // 送信完了　報告メール
+            $compSubject = date("Y年m月d日H時i分") . "  下記メールの配信が完了しました。";
             // 管理者宛に変更
             $this->objMail->setTo($objSite->data["email03"]);
             $this->objMail->setSubject($compSubject);
 
-            //-- テキストメール配信の場合
-            if( $mail_data[$i][0]["mail_method"] == 2 ) {
+            // テキストメール配信の場合
+            if ($arrMail["mail_method"] == 2 ) {
                 $sendResut = $this->objMail->sendMail();
-            //--  HTMLメール配信の場合
+            // HTMLメール配信の場合
             } else {
                 $sendResut = $this->objMail->sendHtmlMail();
             }
         }
-        if ($_GET['mode'] = "now") {
-            header("Location: " . URL_DIR . "admin/mail/history.php");
+        if ($_GET['mode'] == 'now') {
+            $this->sendRedirect($this->getLocation(URL_DIR . 'admin/mail/history.php'));
         }
         echo "complete\n";
Index: /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail.php
===================================================================
--- /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail.php	(revision 18630)
+++ /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail.php	(revision 18631)
@@ -66,9 +66,9 @@
         $this->arrMagazineTypeAll = $masterData->getMasterData("mtb_magazine_type");
 
-        //---- 検索用項目配列
+        // 検索用項目配列
         $this->arrHtmlmail = array( "" => "両方",  1 => "HTML", 2 => "TEXT" );
 
 
-        //---- 配列内容専用項目の配列
+        // 配列内容専用項目の配列
         $this->arrRegistColumn = array(
               array(  "column" => "template_id",    "convert" => "n" ),
@@ -83,11 +83,11 @@
               );
 
-        //---- メルマガ会員種別
+        // メルマガ会員種別
         $this->arrCustomerType = array(1 => "会員",
                                        2 => "非会員",
-                                       //3 => "CSV登録"
+                                       // 3 => "CSV登録"
                                        );
 
-        //---- 検索項目
+        // 検索項目
         $this->arrSearchColumn = array(
              array(  "column" => "name",                "convert" => "aKV"),
@@ -149,5 +149,5 @@
     function process() {
 
-        //---- ページ初期設定
+        // ページ初期設定
         $conn = new SC_DBConn();
         $objView = new SC_AdminView();
@@ -221,11 +221,11 @@
         case 'search':
         case 'back':
-            //-- 入力値コンバート
+            // 入力値コンバート
             $this->list_data = $this->lfConvertParam($_POST, $this->arrSearchColumn);
 
-            //-- 入力エラーのチェック
+            // 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data);
 
-            //-- 検索開始
+            // 検索開始
             if (empty($this->arrErr)) {
                 $this->list_data['name'] = isset($this->list_data['name'])
@@ -234,5 +234,5 @@
                 $this->arrHidden = $this->lfGetHidden($this->list_data);
 
-                //-- 検索データ取得
+                // 検索データ取得
                 $objSelect = new SC_CustomerList($this->list_data, "magazine");
                 // 生成されたWHERE文を取得する
@@ -262,5 +262,5 @@
                 $col = $objSelect->getMailMagazineColumn($this->lfGetIsMobile($_POST['mail_type']));
                 $this->arrResults = $objQuery->select($col, $from, $where, $arrval);
-                //現在時刻の取得
+                // 現在時刻の取得
                 $this->arrNowDate = $this->lfGetNowDate();
             }
@@ -270,11 +270,11 @@
             */
         case 'input':
-            //-- 入力値コンバート
+            // 入力値コンバート
             $this->list_data = $this->lfConvertParam($_POST, $this->arrSearchColumn);
-            //-- 入力エラーのチェック
+            // 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data);
-            //-- エラーなし
+            // エラーなし
             if (empty($this->arrErr)) {
-                //-- 現在時刻の取得
+                // 現在時刻の取得
                 $this->arrNowDate = $this->lfGetNowDate();
                 $this->arrHidden = $this->lfGetHidden($this->list_data); // hidden要素作成
@@ -286,8 +286,8 @@
             */
         case 'template':
-            //-- 入力値コンバート
+            // 入力値コンバート
             $this->list_data = $this->lfConvertParam($_POST, $this->arrSearchColumn);
 
-            //-- 時刻設定の取得
+            // 時刻設定の取得
             $this->arrNowDate['year'] = isset($_POST['send_year']) ? $_POST['send_year'] : "";
             $this->arrNowDate['month'] = isset($_POST['send_month']) ? $_POST['send_month'] : "";
@@ -296,8 +296,8 @@
             $this->arrNowDate['minutes'] = isset($_POST['send_minutes']) ? $_POST['send_minutes'] : "";
 
-            //-- 入力エラーのチェック
+            // 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data);
 
-            //-- 検索開始
+            // 検索開始
             if (empty($this->arrErr)) {
                 $this->list_data['name'] = isset($this->list_data['name']) ? SC_Utils_Ex::sfManualEscape($this->list_data['name']) : "";
@@ -312,5 +312,5 @@
                 }
 
-                //-- HTMLテンプレートを使用する場合は、HTMLソースを生成してBODYへ挿入
+                // HTMLテンプレートを使用する場合は、HTMLソースを生成してBODYへ挿入
                 if ( $this->list_data["mail_method"] == 3) {
                     $objTemplate = new LC_HTMLtemplate;
@@ -318,5 +318,5 @@
                     $objSiteInfo = new SC_SiteInfo();
                     $objTemplate->arrInfo = $objSiteInfo->data;
-                    //メール担当写真の表示
+                    // メール担当写真の表示
                     $objUpFile = new SC_UploadFile(IMAGE_TEMP_URL, IMAGE_SAVE_URL);
                     $objUpFile->addFile("メール担当写真", 'charge_image', array('jpg'), IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
@@ -337,17 +337,17 @@
         case 'regist_back':
         case 'regist_complete':
-            //-- 入力値コンバート
+            // 入力値コンバート
             $this->arrCheckColumn = array_merge( $this->arrSearchColumn, $this->arrRegistColumn );
             $this->list_data = $this->lfConvertParam($_POST, $this->arrCheckColumn);
 
-            //現在時刻の取得
+            // 現在時刻の取得
             $this->arrNowDate = $this->lfGetNowDate();
 
-            //-- 入力エラーのチェック
+            // 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data, 1);
             $this->tpl_mainpage = 'mail/input.tpl';
             $this->arrHidden = $this->lfGetHidden($this->list_data); // hidden要素作成
 
-            //-- 検索開始
+            // 検索開始
             if (empty($this->arrErr)) {
                 $this->list_data['name'] =
@@ -358,10 +358,10 @@
                     $this->tpl_mainpage = 'mail/input_confirm.tpl';
                 } else if( $_POST['mode'] == 'regist_complete' ){
-                    $this->lfRegistData($conn, $this->list_data);
-                    if(MELMAGA_SEND == true) {
-                        if(MELMAGA_BATCH_MODE) {
-                            $this->sendRedirect($this->getLocation(URL_DIR . "admin/mail/history.php"));
+                    $sendId = $this->lfRegistData($conn, $this->list_data);
+                    if (MELMAGA_SEND) {
+                        if (MELMAGA_BATCH_MODE) {
+                            $this->sendRedirect($this->getLocation(URL_DIR . 'admin/mail/history.php'));
                         } else {
-                            $this->sendRedirect($this->getLocation(URL_DIR . "admin/mail/sendmail.php", array("mode" => "now")));
+                            $this->sendRedirect($this->getLocation(URL_DIR . 'admin/mail/sendmail.php', array('mode' => 'now', 'send_id' => $sendId)));
                         }
                         exit;
@@ -389,5 +389,5 @@
         $this->arrCampaignList = $this->lfGetCampaignList($objQuery);
 
-        //---- ページ表示
+        // ページ表示
         $objView->assignobj($this);
         $objView->display(MAIN_FRAME);
@@ -421,5 +421,5 @@
     }
 
-    //現在時刻の取得（配信時間デフォルト値）
+    // 現在時刻の取得（配信時間デフォルト値）
     function lfGetNowDate(){
         $nowdate = date("Y/n/j/G/i");
@@ -451,5 +451,9 @@
     }
 
-    // 配信内容と配信リストを書き込む
+    /**
+     * 配信内容と配信リストを書き込む
+     *
+     * @return string 登録した行の dtb_send_history.send_id の値
+     */
     function lfRegistData(&$conn, $arrData){
 
@@ -461,7 +465,4 @@
 
         $dtb_send_history = array();
-        if(DB_TYPE=='pgsql'){
-            $dtb_send_history["send_id"] = $objQuery->nextval('dtb_send_history', 'send_id');
-        }
         $dtb_send_history["mail_method"] = $arrData['mail_method'];
         $dtb_send_history["subject"] = $arrData['subject'];
@@ -479,19 +480,19 @@
         $dtb_send_history["create_date"] = "now()";
         $objQuery->insert("dtb_send_history", $dtb_send_history );
-        if(DB_TYPE == "mysql"){
-            $dtb_send_history["send_id"] = $objQuery->nextval('dtb_send_history','send_id');
-        }
+
+        $sendId = $objQuery->currval('dtb_send_history', 'send_id');
+
         if ( is_array( $search_data ) ){
             foreach( $search_data as $line ){
                 $dtb_send_customer = array();
                 $dtb_send_customer["customer_id"] = $line["customer_id"];
-                $dtb_send_customer["send_id"] = $dtb_send_history["send_id"];
+                $dtb_send_customer["send_id"] = $sendId;
                 $dtb_send_customer["email"] = $line["email"];
-
                 $dtb_send_customer["name"] = $line["name01"] . " " . $line["name02"];
-
                 $conn->autoExecute("dtb_send_customer", $dtb_send_customer );
             }
         }
+
+        return $sendId;
     }
 
@@ -528,5 +529,5 @@
 
 
-    //---- HTMLテンプレートを使用する場合、データを取得する。
+    // HTMLテンプレートを使用する場合、データを取得する。
     function lfGetHtmlTemplateData($id) {
 
@@ -559,5 +560,5 @@
                 $result = $conn->getAll($sql, array($list_data["sub_product_id" .$j]));
                 $list_data["sub"][$k][$l] = $result[0];
-                $list_data["sub"][$k]["data_exists"] = "OK";    //当該段にデータが１つ以上存在するフラグ
+                $list_data["sub"][$k]["data_exists"] = "OK";    // 当該段にデータが１つ以上存在するフラグ
             }
             $l ++;
@@ -566,5 +567,5 @@
     }
 
-    //---   テンプレートの種類を返す
+    // テンプレートの種類を返す
     function lfGetTemplateMethod($conn, $templata_id){
 
@@ -574,5 +575,5 @@
     }
 
-    //---   hidden要素出力用配列の作成
+    // hidden要素出力用配列の作成
     function lfGetHidden( $array ){
         if ( is_array($array) ){
@@ -590,5 +591,5 @@
     }
 
-    //----　取得文字列の変換
+    // 取得文字列の変換
     function lfConvertParam($array, $arrSearchColumn) {
 
@@ -612,5 +613,5 @@
 
 
-    //---- 入力エラーチェック
+    // 入力エラーチェック
     function lfErrorCheck($array, $flag = '') {
 
@@ -658,5 +659,5 @@
         $objErr->doFunc(array("キャンペーン", "campaign_id", INT_LEN), array("NUM_CHECK"));
 
-        //購入金額(from) ＞ 購入金額(to) の場合はエラーとする
+        // 購入金額(from) ＞ 購入金額(to) の場合はエラーとする
         if ( (is_numeric($array["buy_total_from"]) && is_numeric($array["buy_total_to"]) ) &&
              ($array["buy_total_from"] > $array["buy_total_to"]) ) {
@@ -689,5 +690,5 @@
         $sql = "SELECT template_id, subject, mail_method FROM dtb_mailmaga_template WHERE del_flg = 0 ";
         if ($_POST["htmlmail"] == 2 || $_POST['mail_type'] == 2) {
-            $sql .= " AND mail_method = 2 ";    //TEXT希望者へのTESTメールテンプレートリスト
+            $sql .= " AND mail_method = 2 ";    // TEXT希望者へのTESTメールテンプレートリスト
         }
         $sql .= " ORDER BY template_id DESC";
Index: /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail_History.php
===================================================================
--- /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail_History.php	(revision 18234)
+++ /branches/comu-ver2/data/class/pages/admin/mail/LC_Page_Admin_Mail_History.php	(revision 18631)
@@ -58,5 +58,5 @@
      */
     function process() {
-        //---- ページ初期設定
+        // ページ初期設定
         $conn = new SC_DBConn();
         $objView = new SC_AdminView();
@@ -72,5 +72,5 @@
 
         // 削除時
-        if (SC_Utils_Ex::sfCheckNumLength($_GET['send_id']) && ($_GET['mode']=='delete') ){
+        if (SC_Utils_Ex::sfCheckNumLength($_GET['send_id']) && ($_GET['mode']=='delete')) {
 
             $sql = "UPDATE dtb_send_history SET del_flg = 1 WHERE send_id = ?";
@@ -79,5 +79,4 @@
             $this->reload();
         }
-        $col = "*";
         $from = "dtb_send_history";
 
@@ -102,8 +101,14 @@
         $objQuery->setorder($order);
 
+        $col = "*";
+        $col .= ",(SELECT COUNT(*) FROM dtb_send_customer WHERE dtb_send_customer.send_id = dtb_send_history.send_id) AS count_all";
+        $col .= ",(SELECT COUNT(*) FROM dtb_send_customer WHERE dtb_send_customer.send_id = dtb_send_history.send_id AND send_flag = 1) AS count_sent";
+        $col .= ",(SELECT COUNT(*) FROM dtb_send_customer WHERE dtb_send_customer.send_id = dtb_send_history.send_id AND send_flag = 2) AS count_error";
+        $col .= ",(SELECT COUNT(*) FROM dtb_send_customer WHERE dtb_send_customer.send_id = dtb_send_history.send_id AND send_flag IS NULL) AS count_unsent";
+
         // 検索結果の取得
         $this->arrDataList = $objQuery->select($col, $from, $where, $arrval);
 
-        //---- ページ表示
+        // ページ表示
         $objView->assignobj($this);
         $objView->display(MAIN_FRAME);
Index: /branches/comu-ver2/data/Smarty/templates/default/admin/mail/history.tpl
===================================================================
--- /branches/comu-ver2/data/Smarty/templates/default/admin/mail/history.tpl	(revision 18254)
+++ /branches/comu-ver2/data/Smarty/templates/default/admin/mail/history.tpl	(revision 18631)
@@ -26,28 +26,42 @@
 <input type="hidden" name="mode" value="" />
 <div id="mail" class="contents-main">
-  <table class="list center">
-    <tr>
-      <th>配信開始時刻</th>
-      <th>配信終了時刻</th>
-      <th>Subject</th>
-      <th>プレビュー</th>
-      <th>配信条件</th>
-      <th>配信予定件数</th>
-      <th>配信件数</th>
-      <th>削除</th>
-    </tr>
-    <!--{section name=cnt loop=$arrDataList}-->
-    <tr>
-      <td><!--{$arrDataList[cnt].start_date|sfDispDBDate|escape}--></td>
-      <td><!--{$arrDataList[cnt].end_date|sfDispDBDate|escape}--></td>
-      <td class="left"><!--{$arrDataList[cnt].subject|escape}--></td>
-      <td><a href="./preview.php?send_id=<!--{$arrDataList[cnt].send_id|escape}-->" target="_blank">確認</a></td>
-      <td><a href="#" onclick="win03('./<!--{$smarty.const.DIR_INDEX_URL}-->?mode=query&amp;send_id=<!--{$arrDataList[cnt].send_id|escape}-->','query','720','420'); return false;">確認</a></td>
-      <td><!--{$arrDataList[cnt].send_count|escape}--></td>
-      <td><!--{$arrDataList[cnt].complete_count|escape}--></td>
-      <td><a href="<!--{$smarty.server.PHP_SELF|escape}-->?mode=delete&send_id=<!--{$arrDataList[cnt].send_id|escape}-->" onclick="return window.confirm('配信履歴を削除しても宜しいでしょうか');">削除</a></td>
-    </tr>
-    <!--{/section}-->
-  </table>
+    <table class="list center">
+        <tr>
+            <th>配信開始時刻</th>
+            <th>配信終了時刻</th>
+            <th>Subject</th>
+            <th>プレビュー</th>
+            <th>配信条件</th>
+            <th>配信総数</th>
+            <th>配信済数</th>
+            <th>配信失敗数</th>
+            <th>未配信数</th>
+            <th>再試行</th>
+            <th>削除</th>
+        </tr>
+        <!--{section name=cnt loop=$arrDataList}-->
+        <tr>
+            <td><!--{$arrDataList[cnt].start_date|sfDispDBDate|escape}--></td>
+            <td><!--{$arrDataList[cnt].end_date|sfDispDBDate|escape}--></td>
+            <td class="left"><!--{$arrDataList[cnt].subject|escape}--></td>
+            <td><a href="./preview.php?send_id=<!--{$arrDataList[cnt].send_id|escape}-->" target="_blank">確認</a></td>
+            <td><a href="#" onclick="win03('./<!--{$smarty.const.DIR_INDEX_URL}-->?mode=query&amp;send_id=<!--{$arrDataList[cnt].send_id|escape}-->','query','720','420'); return false;">確認</a></td>
+            <td><!--{$arrDataList[cnt].count_all|escape}--></td>
+            <td><!--{$arrDataList[cnt].count_sent|escape}--></td>
+            <td style="<!--{if $arrDataList[cnt].count_error >= 1}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->">
+                <!--{$arrDataList[cnt].count_error|escape}-->
+            </td>
+            <td style="<!--{if $arrDataList[cnt].count_unsent >= 1}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->">
+                <!--{$arrDataList[cnt].count_unsent|escape}-->
+            </td>
+            <td>
+                <!--{if $arrDataList[cnt].count_error >= 1 || $arrDataList[cnt].count_unsent >= 1}-->
+                    <a href="sendmail.php?mode=now&amp;send_id=<!--{$arrDataList[cnt].send_id|escape}-->&amp;retry=yes" onclick="return window.confirm('未配信と配信失敗となった宛先に再送信を試みますか?');">実行</a>
+                <!--{/if}-->
+            </td>
+            <td><a href="?mode=delete&send_id=<!--{$arrDataList[cnt].send_id|escape}-->" onclick="return window.confirm('配信履歴を削除しても宜しいでしょうか');">削除</a></td>
+        </tr>
+        <!--{/section}-->
+    </table>
 </div>
 </form>
