diff --git a/src/web/admin/admin_send_email.html b/src/web/admin/admin_send_email.html index 5797f51..1a18e5a 100644 --- a/src/web/admin/admin_send_email.html +++ b/src/web/admin/admin_send_email.html @@ -111,11 +111,15 @@ function getMaestroData() { var maestroID = 1; + var maestroName = "삼화초"; + var email = "jisangs@daum.net"; + var accountType = 1; sendRequestServer( //url, sendParams, onSuccess, onFail, isDebugMode); // "./../server/mail/send_mail_bank_info.php", "./../server/mail/send_mail_test.php", - "type=get_maestro_data" + "&maestro_id=" + maestroID, + // "type=get_maestro_data" + "&maestro_id=" + maestroID, + "type=get_maestro_data" + "&maestro_id=" + maestroID + "&maestro_name=" + maestroName + "&email=" + email + "&account_type=" + accountType, function(jsonData) { console.log(jsonData); diff --git a/src/web/server/maestro/add_maestro.php b/src/web/server/maestro/add_maestro.php index 8380575..514bdbd 100644 --- a/src/web/server/maestro/add_maestro.php +++ b/src/web/server/maestro/add_maestro.php @@ -4,9 +4,11 @@ header("Content-Type: application/json"); include "./../setup/connect_db.php"; include "./../lib/send_reply_json.php"; include "./../lib/maestro_account_info.php"; +include "./../lib/db_maestro.php"; include "./../mail/mail_setting.php"; include "./../mail/send_mail.php"; + $maestro_name = $_POST["maestro_name"]; $password = $_POST["password"]; $email = $_POST["email"]; diff --git a/src/web/server/maestro/login.php b/src/web/server/maestro/login.php index 8740d3b..6937288 100644 --- a/src/web/server/maestro/login.php +++ b/src/web/server/maestro/login.php @@ -1,8 +1,8 @@ false, // 광고메일여부 default: false + "attachFileIds" => array_map(), // 첨부파일ID + "body" => "", // Email 본문 + "individual" => true, // 개인발송여부 (개인발송 시 참조인, 숨은참조 무시됨) default: true + "parameters" => array_map(), // 치환 파라미터 (전체 수신자에게 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + "recipients" => array( // 수신자목록 + array( + "address" => "", // 수신자 Email 주소 + "name" => "", // 수신자 명 + "type" => "", // 수신자 유형 (R: 수신자, C: 참조인, B: 숨은참조) default: R + "parameters" => array_map(), // 치환 파라미터 (수신자별로 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + ), + ), + "referencesHeader" => "", // 특정 메일을 모아서 보기 위해 네이버 메일에서 지원하는 기능, 해당 필드에 동일한 값을 입력한 메일들을 모아서 볼 수 있다. (다음의 형태가 되어야 함 : ) + "reservationUtc" => "", // 예약 발송 일시 ( 1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 1/1000초로 환산한 정수 ), reservationDateTime 값보다 이 값이 우선 적용된다. + "reservationDateTime" => "", // 다음과 같은 형태의 예약 발송 일시 (‘yyyy-MM-dd HH:mm’ UTC+09:00), reservationUtc 값이 우선한다. + "senderAddress" => "", // 발송자 Email 주소 + "senderName" => "", // 발송자 이름 + "tempRequestId" => "", // 첨부파일 등록 시 사용한 임시 요청 ID + "templateSid" => "", // 템플릿 ID + "title" => "", // Mail 제목 + ); + + $postParam = json_encode($postParam); + + $is_post = true; + + $success_code = 201; + } else { + $success_code = 200; + $requestUrl = $requestUrl."/requests/".$requestId."/status"; + } + + $signautue = makeSignature($secretKey, $method, $requestUrl, $timestamp, $accessKey); + + $url = $hostNameUrl.$requestUrl; + echo $url."\n"; + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, $is_post); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + if($method == "POST") { + curl_setopt($ch, CURLOPT_POSTFIELDS, $postParam); + } + $headers = array(); + $headers[] = "X-NCP-APIGW-TIMESTAMP: " .$timestamp; + $headers[] = "X-NCP-IAM-ACCESS-KEY: " .$accessKey; + $headers[] = "X-NCP-APIGW-SIGNATURE-V2: " .$signautue; + $headers[] = "content-type: application/json"; + + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + $response = curl_exec ($ch); + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + echo "status_code:".$status_code."\n"; + curl_close ($ch); + if($status_code == 200) { + echo $response."\n"; + } else { + echo "Error 내용:".$response."\n"; + } + +} catch(Exception $E) { + echo "Response: ". $E->lastResponse . "\n"; +} + +function makeSignature($secretKey, $method, $uri, $timestamp, $accessKey) { + $space = " "; + $newLine = "\n"; + $hmac = $method.$space.$uri.$newLine.$timestamp.$newLine.$accessKey; + $signautue = base64_encode(hash_hmac('sha256', $hmac, $secretKey,true)); + echo "this is signiture : ".$signautue."\n"; + return $signautue; +} +?> \ No newline at end of file diff --git a/src/web/server/mail/mail_setting.php b/src/web/server/mail/mail_setting.php index fab618c..e661bbc 100644 --- a/src/web/server/mail/mail_setting.php +++ b/src/web/server/mail/mail_setting.php @@ -1,13 +1,20 @@ "; $from = "support+chocomae@jinaju.com"; $bcc = "support+chocomae.automail@jinaju.com"; -// load service db setting -$bank_name = "카카오뱅크"; -$bank_owner_name = "박지상"; -$bank_account_no = "3333-04-4316912"; +// mail sender info +$sender_name = "초코마에"; +$sender_email = $from; +$sender_address = $from; +$sender_bcc = $bcc; + +// bank account info +$bank_account_no = "3333-04-4316912"; +$bank_name = "카카오뱅크"; +$bank_owner_name = "박지상"; ?> \ No newline at end of file diff --git a/src/web/server/mail/send_mail.php b/src/web/server/mail/send_mail.php index f7854dc..a999984 100644 --- a/src/web/server/mail/send_mail.php +++ b/src/web/server/mail/send_mail.php @@ -1,4 +1,260 @@ $maestro_email, // 수신자 Email 주소 + "name" => "", // 수신자 명 + "type" => "R", // 수신자 유형 (R: 수신자, C: 참조인, B: 숨은참조) default: R + // "parameters" => array_map(), + // 치환 파라미터 (수신자별로 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + "parameters" => array( + "maestro_name" => $maestro_name, + ), // 치환 파라미터 (수신자별로 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + ), + array( + "address" => $sender_bcc, // 수신자 Email 주소 + "name" => "", // 수신자 명 + "type" => "B", // 수신자 유형 (R: 수신자, C: 참조인, B: 숨은참조) default: R + "parameters" => array_map(), + // 치환 파라미터 (수신자별로 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + ), + ); + + return $postParamData; +} + +function sendMailRegisterBankInfo($maestro_name, $maestro_email, $account_type) { + $postParamData = makeDefaultPostParamData($maestro_name, $maestro_email); + + $postParamData["templateSid"] = "134"; + $postParamData["parameters"] = array( + "account_type" => get_accout_type($account_type), + "bank_account_no" => "3333-04-4316912", + "bank_name" => "카카오뱅크", + "bank_owner_name" => "박지상", + "maestro_name" => $maestro_name, + "price" => number_format(get_price($account_type)) + ); + + sendEmail($postParamData); +} + +function sendMailRegisterDone($maestro_name, $maestro_email) { + $postParamData = makeDefaultPostParamData($maestro_name, $maestro_email); + + $postParamData["templateSid"] = "138"; + $postParamData["parameters"] = array( + "maestro_name" => $maestro_name, + ); + + sendEmail($postParamData); +} + +function sendMailUpgradeBankInfo($maestro_name, $maestro_email, $account_type, $upgrade_account_type) { + $postParamData = makeDefaultPostParamData($maestro_name, $maestro_email); + + $postParamData["templateSid"] = "139"; + $postParamData["parameters"] = array( + "account_type" => get_accout_type($account_type), + "upgrade_account_type" => get_accout_type($upgrade_account_type), + "bank_account_no" => "3333-04-4316912", + "bank_name" => "카카오뱅크", + "bank_owner_name" => "박지상", + "maestro_name" => $maestro_name, + "price" => number_format(get_price($upgrade_account_type) - get_price($account_type)) + ); + + sendEmail($postParamData); +} + +function sendMailUpgradeDone($maestro_name, $maestro_email, $account_type, $upgrade_account_type) { + $postParamData = makeDefaultPostParamData($maestro_name, $maestro_email); + + $postParamData["templateSid"] = "140"; + $postParamData["parameters"] = array( + "account_type" => get_accout_type($account_type), + "upgrade_account_type" => get_accout_type($upgrade_account_type), + "maestro_name" => $maestro_name, + ); + + sendEmail($postParamData); +} + +function sendEmail($postParamData) { + global $host_name_url, $request_url, $access_key, $secret_key, $api_key, $method, $request_id; + global $sender_name, $sender_address; + + $postParam = null; + if($method == "POST") { + $postParam = makePostParam($postParamData); + // echo "\n\r".$postParam."\n\r"; + // set_data("postParam", $postParam); + } else { + $request_url = $request_url."/requests/".$request_id."/status"; + } + + $timestamp = getTimeStamp(); + $signature = makeSignature($secret_key, $method, $request_url, $timestamp, $access_key); + + cUrl($postParam, $timestamp, $signature); +} + + +function makeRequestUrl() { + global $method, $request_url, $request_id; + + if($method == "POST") + return $request_url; + else + return $request_url."/requests/".$request_id."/status"; +} + +function getPostParamData($postParamData, $key) { + if(array_key_exists($key, $postParamData)) + return $postParamData[$key]; + + switch($key) { + case "body": + case "sender_address": + case "sender_name": + case "templateSid": + case "title": + return ""; + break; + + case "parameters": + case "recipients": + return array_map(); + break; + + case "individual": + return false; + break; + } +} + +function makePostParam($postParamData) { + global $sender_name, $sender_address, $sender_bcc; + + $postParam = array( + "advertising" => false, // 광고메일여부 default: false + "attachFileIds" => array_map(), // 첨부파일ID + "body" => getPostParamData($postParamData, "body"), // Email 본문 + "individual" => getPostParamData($postParamData, "individual"), + // 개인발송여부 (개인발송 시 참조인, 숨은참조 무시됨) default: true + "parameters" => getPostParamData($postParamData, "parameters"), + // 치환 파라미터 (전체 수신자에게 적용), ‘치환 ID’ 를 key로, ‘치환 ID에 맵핑되는 값’ 을 value로 가지는 Map 형태의 Object + "recipients" => getPostParamData($postParamData, "recipients"), + "referencesHeader" => "", + // 특정 메일을 모아서 보기 위해 네이버 메일에서 지원하는 기능, 해당 필드에 동일한 값을 입력한 메일들을 모아서 볼 수 있다. (다음의 형태가 되어야 함 : ) + "reservationUtc" => "", + // 예약 발송 일시 ( 1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 1/1000초로 환산한 정수 ), reservationDateTime 값보다 이 값이 우선 적용된다. + "reservationDateTime" => "", + // 다음과 같은 형태의 예약 발송 일시 (‘yyyy-MM-dd HH:mm’ UTC+09:00), reservationUtc 값이 우선한다. + "sender_address" => getPostParamData($postParamData, "sender_address"), // 발송자 Email 주소 + "sender_name" => getPostParamData($postParamData, "sender_name"), // 발송자 이름 + "temprequest_id" => "", // 첨부파일 등록 시 사용한 임시 요청 ID + "templateSid" => getPostParamData($postParamData, "templateSid"), // 템플릿 ID + "title" => getPostParamData($postParamData, "title"), // Mail 제목 + ); + + return json_encode($postParam); +} + +function getTimeStamp() { + $timestamp = ""; + $microtime = ""; + list($microtime,$timestamp) = explode(' ',microtime()); + $timestamp = $timestamp.substr($microtime, 2, 3); + + return $timestamp; +} + +function makeSignature($secret_key, $method, $uri, $timestamp, $access_key) { + $space = " "; + $newLine = "\n"; + $hmac = $method.$space.$uri.$newLine.$timestamp.$newLine.$access_key; + $signature = base64_encode(hash_hmac('sha256', $hmac, $secret_key,true)); + // set_data("signature", $signature); + return $signature; +} + +function cUrl($postParam, $timestamp, $signature) { + global $host_name_url, $request_url, $access_key, $secret_key, $api_key, $method, $request_id; + + $is_post = false; + if($method == "POST") + $is_post = true; + + try { + $url = $host_name_url.$request_url; + // echo $url."\n"; + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, $is_post); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + if($method == "POST") { + curl_setopt($ch, CURLOPT_POSTFIELDS, $postParam); + } + + $headers = array(); + $headers[] = "X-NCP-APIGW-TIMESTAMP: " .$timestamp; + $headers[] = "X-NCP-IAM-ACCESS-KEY: " .$access_key; + $headers[] = "X-NCP-APIGW-SIGNATURE-V2: " .$signature; + $headers[] = "content-type: application/json"; + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + $response = curl_exec ($ch); + + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + // echo "status_code:".$status_code."\n"; + curl_close ($ch); + if($status_code == 200) { + set_data("sendmail_respond", $response); + } else if($status_code == 201) { + set_data("sendmail_succeed", $response); + } else { + set_data("sendmail_error", $response); + } + + } catch(Exception $E) { + set_data("sendmail_error", $E->lastResponse); + } +} + + + + +/* + +//////////////////////// +// CentOS postfix e-mail sender (canceled) +//////////////////////// + function makeMailHeader($from, $bcc) { global $new_line; @@ -222,5 +478,6 @@ function messageUpgradeDone($maestro_name, $account_type, $upgrade_account_type) .$new_line ."감사합니다.".$new_line; } +*/ ?> \ No newline at end of file diff --git a/src/web/server/mail/send_mail_test.php b/src/web/server/mail/send_mail_test.php index 2e722ee..488be41 100644 --- a/src/web/server/mail/send_mail_test.php +++ b/src/web/server/mail/send_mail_test.php @@ -12,68 +12,28 @@ $type = $_POST["type"]; $maestro_id = $_POST["maestro_id"]; $maestro_name = $_POST["maestro_name"]; $password = $_POST["password"]; -$email = $_POST["email"]; +$maestro_email = $_POST["email"]; $account_type = $_POST["account_type"]; $upgrade_account_type = $_POST["upgrade_account_type"]; -// set_data("maestro_name", $maestro_name); -// set_data("email", $email); -// set_data("account_type", $account_type); -// set_data("upgrade_account_type", $upgrade_account_type); if($type == "sendMailRegisterBankInfo") { - sendMailRegisterBankInfo($maestro_name, $email, $account_type); - /* - // subject registered - $subject = subjectRegisterBankInfo($maestro_name); - set_data("subject", $subject); + sendMailRegisterBankInfo($maestro_name, $maestro_email, $account_type); - // messgae registered - $messgae = messageRegisterBankInfo($maestro_name, $account_type, $upgrade_account_type); - set_data("messgae", $messgae); - */ } else if($type == "sendMailRegistered") { - sendMailRegisterDone($maestro_name, $email, $account_type); - /* - // maestro data - $maestro_data = get_maestro_data($maestro_id); - set_data("maestroData", $maestro_data); + sendMailRegisterDone($maestro_name, $maestro_email); - // subject registered - $subject = subjectRegisterDone($maestro_data["name"]); - set_data("subject", $subject); - - - // messgae registered - $messgae = messageRegisterDone($maestro_data["name"]); - set_data("messgae", $messgae); - */ } else if($type == "sendMailUpgradeBankInfo") { - sendMailUpgradeBankInfo($maestro_name, $email, $account_type, $upgrade_account_type); - /* - // subject registered - $subject = subjectUpgradeBankInfo($maestro_name); - set_data("subject", $subject); + sendMailUpgradeBankInfo($maestro_name, $maestro_email, $account_type, $upgrade_account_type); + - // messgae registered - $messgae = messageUpgradeBankInfo($maestro_name, $account_type, $upgrade_account_type); - set_data("messgae", $messgae); - */ } else if($type == "sendMailUpgradeDone") { - sendMailUpgradeDone($maestro_name, $email, $account_type, $upgrade_account_type); - /* - // subject upgrade bank info - $subject = subjectUpgradeDone($maestro_name); - set_data("subject", $subject); + sendMailUpgradeDone($maestro_name, $maestro_email, $account_type, $upgrade_account_type); - // messgae upgrade bank info - $messgae = messageUpgradeDone($maestro_name, $account_type, $upgrade_account_type); - set_data("messgae", $messgae); - */ } else if($type == "get_maestro_data") { // maestro data $maestro_data = get_maestro_data($maestro_id);