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;
}
}
?>