getAll( "SELECT send_id FROM dtb_send_history WHERE complete_count = 0 AND del_flg = 0 ORDER BY send_id ASC, start_date ASC" ); } else { // 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 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 ORDER BY send_id ASC, start_date ASC"; } //---- 30分毎にCronが送信時間データ確認 $time_data = $conn->getAll($sql); } $count = count($time_data); if( $count > 0 ){ print("start sending
\n"); } else { print("not found
\n"); exit; } //---- メール送信準備 for( $i = 0; $i < $count; $i++ ) { $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"] ) ); } //---- 送信結果フラグ用SQL $sql_flag ="UPDATE dtb_send_customer SET send_flag = ? WHERE send_id = ? AND customer_id = ?"; $objMail = new GC_SendMail(); //---- メール生成と送信 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"]); if ($name == "") { $name = "お客"; } $customerName = htmlspecialchars($name); $subjectBody = ereg_replace( "{name}", $customerName , $mail_data[$i][0]["subject"] ); $mailBody = ereg_replace( "{name}", $customerName , $mail_data[$i][0]["body"] ); //-- メルマガ配信をブレイン連携で行う場合 if(MELMAGA_SEND_BLAYN){ //-- 文字を日本語に設定 Mb_language( "Japanese" ); //-- 送信するメールの内容と送信先 $sendResut = array( "to" => $list_data[$i][$j]["email"] // 顧客宛先 ,"subject" => mb_encode_mimeheader($subjectBody) // Subject ,"from" => $objSite->data["email03"] // 送信元メールアドレス ,"replay_to" => $objSite->data["email03"] // reply_to ,"return_path" => $objSite->data["email04"] // return_path ); //-- メッセージの構築 $html_param['head_charset'] = "ISO-2022-JP"; $html_param['html_encoding'] = "ISO-2022-JP"; $html_param['html_charset'] = "JIS"; //-- ブレインSMTPサーバーIPアドレス $param = array( 'host' => "210.188.254.83" ,'port' => "25" ); //-- Mail_mimeオブジェクト作成 $mail_mimeObj = new Mail_mime(); //-- Mail_mimeオブジェクトにHTMLの本文を追加 $mailBody = mb_convert_encoding($mailBody, "JIS", CHAR_CODE); $mail_mimeObj->setHTMLBody($mailBody); $body = $mail_mimeObj->get($html_param); $header = $mail_mimeObj->headers($sendResut); //-- PEAR::Mailを使ってメール送信オブジェクト作成 $mailObj =& Mail::factory("smtp", $param); // メール送信 $result = $mailObj->send($sendResut["to"], $header, $body); } else { //-- テキストメール配信の場合 if( $mail_data[$i][0]["mail_method"] == 2 ) { $sendResut = MAIL_SENDING( $list_data[$i][$j]["email"] // 顧客宛先 ,$subjectBody // Subject ,$mailBody // メール本文 ,$objSite->data["email03"] // 送信元メールアドレス ,$objSite->data["company_name"] // 送信元名 ,$objSite->data["email03"] // reply_to ,$objSite->data["email04"] // return_path ,$objSite->data["email04"] // errors_to ); //-- HTMLメール配信の場合 } elseif( $mail_data[$i][0]["mail_method"] == 1 || $mail_data[$i][0]["mail_method"] == 3) { $sendResut = HTML_MAIL_SENDING( $list_data[$i][$j]["email"] ,$subjectBody ,$mailBody ,$objSite->data["email03"] // 送信元メールアドレス ,$objSite->data["company_name"] // 送信元名 ,$objSite->data["email03"] // reply_to ,$objSite->data["email04"] // return_path ,$objSite->data["email04"] // errors_to ); } } //-- 送信完了なら1、失敗なら0をメール送信結果フラグとしてDBに挿入 if( ! $sendResut ){ $sendFlag = "0"; } else { $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_flag, array( $sendFlag, $mail_data[$i][0]["send_id"], $list_data[$i][$j]["customer_id"] ) ); } //--- メール全件送信完了後の処理 $completeSql = "UPDATE dtb_send_history SET end_date = now() WHERE send_id = ?"; $conn->query( $completeSql, array( $time_data[$i]["send_id"] ) ); //--- 送信完了 報告メール $compData = date("Y年m月d日H時i分" . " 下記メールの配信が完了しました。" ); HTML_MAIL_SENDING( $objSite->data["email03"] ,$compData ,$mail_data[$i][0]["body"] ,$objSite->data["email03"] // 送信元メールアドレス ,$objSite->data["company_name"] // 送信元名 ,$objSite->data["email03"] // reply_to ,$objSite->data["email04"] // return_path ,$objSite->data["email04"] // errors_to ); if ($_GET['mode'] = "now") { header("Location: " . URL_DIR . "admin/mail/history.php"); } echo "complete\n"; } //--- テキストメール配信 function MAIL_SENDING( $to, $subject, $body, $fromaddress, $from_name, $reply_to, $return_path, $errors_to="", $bcc="", $cc ="" ) { $mail_obj = new GC_SendMail(); $mail_obj->setItem( $to, $subject, $body, $fromaddress, $from_name, $reply_to, $return_path, $errors_to, $bcc, $cc ); if( $mail_obj->sendMail() ) { return true; } } //--- HTMLメール配信 function HTML_MAIL_SENDING( $to, $subject, $body, $fromaddress, $from_name, $reply_to, $return_path, $errors_to="", $bcc="", $cc ="" ) { $html_mail_obj = new GC_SendMail(); $html_mail_obj->setItemHtml( $to, $subject, $body, $fromaddress, $from_name, $reply_to, $return_path, $errors_to, $bcc, $cc ); if( $html_mail_obj->sendHtmlMail() ) { return true; } } ?>