Example #1
0
 /**
  * 指定したIDのメルマガ配送を行う
  *
  * @param integer $send_id dtb_send_history の情報
  * @return void
  */
 function sfSendMailmagazine($send_id)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objDb = new SC_Helper_DB_Ex();
     $objSite = $objDb->sfGetBasisData();
     $objMail = new SC_SendMail_Ex();
     $where = 'del_flg = 0 AND send_id = ?';
     $arrMail = $objQuery->getRow('*', 'dtb_send_history', $where, array($send_id));
     // 対象となる$send_idが見つからない
     if (SC_Utils_Ex::isBlank($arrMail)) {
         return;
     }
     // 送信先リストの取得
     $arrDestinationList = $objQuery->select('*', 'dtb_send_customer', 'send_id = ? AND (send_flag = 2 OR send_flag IS NULL)', array($send_id));
     // 現在の配信数
     $complete_count = $arrMail['complete_count'];
     if (SC_Utils_Ex::isBlank($arrMail)) {
         $complete_count = 0;
     }
     foreach ($arrDestinationList as $arrDestination) {
         // お名前の変換
         $customerName = trim($arrDestination['name']);
         $subjectBody = preg_replace("/{name}/", $customerName, $arrMail['subject']);
         $mailBody = preg_replace("/{name}/", $customerName, $arrMail['body']);
         $objMail->setItem($arrDestination['email'], $subjectBody, $mailBody, $objSite["email03"], $objSite["shop_name"], $objSite["email03"], $objSite["email04"], $objSite["email04"]);
         // テキストメール配信の場合
         if ($arrMail["mail_method"] == 2) {
             $sendResut = $objMail->sendMail();
             // HTMLメール配信の場合
         } else {
             $sendResut = $objMail->sendHtmlMail();
         }
         // 送信完了なら1、失敗なら2をメール送信結果フラグとしてDBに挿入
         if (!$sendResut) {
             $sendFlag = '2';
         } else {
             // 完了を 1 増やす
             $sendFlag = '1';
             $complete_count++;
         }
         // 送信結果情報を更新
         $objQuery->update('dtb_send_customer', array('send_flag' => $sendFlag), 'send_id = ? AND customer_id = ?', array($send_id, $arrDestination["customer_id"]));
     }
     // メール全件送信完了後の処理
     $objQuery->update('dtb_send_history', array('end_date' => 'CURRENT_TIMESTAMP', 'complete_count' => $complete_count), 'send_id = ?', array($send_id));
     // 送信完了 報告メール
     $compSubject = date("Y年m月d日H時i分") . "  下記メールの配信が完了しました。";
     // 管理者宛に変更
     $objMail->setTo($objSite["email03"]);
     $objMail->setSubject($compSubject);
     // テキストメール配信の場合
     if ($arrMail["mail_method"] == 2) {
         $sendResut = $objMail->sendMail();
         // HTMLメール配信の場合
     } else {
         $sendResut = $objMail->sendHtmlMail();
     }
     return;
 }