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( $time_data ); $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( $time_data ); $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_MOBILE_SEND){ //文字を日本語に設定 Mb_language( "Japanese" ); // ヘッダーに日本語を使用する場合はMb_encode_mimeheaderでエンコードする。 $objSite->data["company_name"] = ereg_replace("<","<", $from_name); $objSite->data["company_name"] = ereg_replace(">",">", $from_name); $objSite->data["company_name"] = mb_convert_encoding($from_name,"JIS",CHAR_CODE); //iso-2022-jpだと特殊文字が?で送信されるのでJISを使用する。 $mailBody = mb_convert_encoding($mailBody, "JIS", CHAR_CODE ); $headers = array( "to" => $list_data[$i][$j]["email"] // 顧客宛先 ,"subject" => $subjectBody // Subject ,"fromaddress" => $objSite->data["email03"] // 送信元メールアドレス ,"from_name" => $objSite->data["company_name"]// 送信元名 ,"replay_to" => $objSite->data["email03"] // reply_to ,"return_path" => $objSite->data["email04"] // return_path ); print_r($sendResut["subject"]); print_r($sendResut["to"]); //ブレインSMTPサーバーIPアドレス $param = array( 'host' => "210.188.254.83" ,'port' => "25" ); $mail_obj =& Mail::factory("smtp", $param); print_r($mail_obj); $headers["subject"] = mb_convert_encoding($sendResut["subject"], "JIS", CHAR_CODE ); $result = $mail_obj->end( $headers["to"], $headers, $body ); // $decoder =& new Mail_mimeDecode($sendResut); // $parts = $decoder->getSendArray(); // // list($recipients, $headers, $body) = $parts; // // $mail_object =& Mail::factory("smtp", $mail_options); // $mail_object->end($recipients, $header, $body); // break; } 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 = "-1"; } 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; } } ?>