// メンテナンスフラグのチェック if (Maintenance::checkMaintenance()) { exit; } // 標準入力からメール情報を取得し、解析する $ComMimeParserMailOBJ = ComMimeParserMail::getInstance(); $BlackListOBJ = BlackList::getInstance(); $AllowDomainOBJ = AllowDomain::getInstance(); // 登録オブジェクトの作成 $PreRegistOBJ = PreRegist::getInstance(); $UserOBJ = User::getInstance(); // メール文言取得 $AutoMailOBJ = AutoMail::getInstance(); $headers = $ComMimeParserMailOBJ->getHeaders(); // 携帯メールアドレスである if (ComValidation::isMobileAddress($headers["from"])) { $mbFlag = true; } // 送信元メアドの取得 $mailAddress = $headers["from"]; //black_userに該当する場合は登録拒否 $dangerFlag = FALSE; //個体識別でチェック if ($mbFlag && $param["uid"]) { if ($BlackListOBJ->searchBlackListByMbSerialNumber($param["uid"])) { $dangerFlag = TRUE; } } //メールアドレスでチェック if ($BlackListOBJ->searchBlackListByAddress($mailAddress)) { $dangerFlag = TRUE;
// メール文言取得 $AutoMailOBJ = AutoMail::getInstance(); // xml出力 $DOMDocumentOBJ = new DOMDocument("1.0", "UTF-8"); $root = $DOMDocumentOBJ->createElement("result"); $DOMDocumentOBJ->appendChild($root); $param = $requestOBJ->getAllParameter(); $affiliateValue = http_build_query($param); // 送信元メアドの取得 $mailAddress = urldecode($param["mail"]); // 広告コードの引数が違うため格納 if ($param["ad_code"]) { $param["advcd"] = $param["ad_code"]; } // 携帯メールアドレスである if (ComValidation::isMobileAddress($mailAddress)) { $mbFlag = true; } //black_userに該当する場合は登録拒否 $dangerFlag = FALSE; //個体識別でチェック if ($mbFlag && $param["uid"]) { if ($BlackListOBJ->searchBlackListByMbSerialNumber($param["uid"])) { $dangerFlag = TRUE; } } //メールアドレスでチェック if ($BlackListOBJ->searchBlackListByAddress($mailAddress)) { $dangerFlag = TRUE; } //ドメインで可否チェック
exit; } // メアドの重複チェック if (!($duplicateUserData = $UserOBJ->getUserDataFromMailAddress($mailAddressChangeData["mail_address"]))) { $duplicateUserData = $UserOBJ->chkUserDataFromLoginId($mailAddressChangeData["mail_address"]); } // 重複メアドがあった場合 if ($duplicateUserData) { $errSessOBJ->errMsg[] = "メールアドレスが重複しています。"; header("Location: ./?action_Update=1" . ($comURLparam ? "&" . $comURLparam : "")); exit; } // トランザクション開始 $UserOBJ->beginTransaction(); // メールステータス等も初期化 if (ComValidation::isMobileAddress($mailAddressChangeData["mail_address"])) { $updateUserData["mb_device_cd"] = $ComUtilityOBJ->getDeviceFromMailAddress($mailAddressChangeData["mail_address"]); $updateUserData["mb_address"] = $mailAddressChangeData["mail_address"]; $updateUserData["mb_address_status"] = 0; $updateUserData["mb_send_status"] = 0; $updateUserData["mb_emsys_count"] = 0; $updateProfileData["mb_is_mailmagazine"] = 0; // 変更前メアドがログインIDと一緒ならログインIDも変更 if ($comUserData["mb_address"] == $comUserData["login_id"]) { $updateUserData["login_id"] = $mailAddressChangeData["mail_address"]; } // アドレス新規登録か if (!$comUserData["mb_address"]) { $firstReg = true; } } else {
// $errMsg[] = "PCメールアドレスが重複しています"; } // PCアドレスステ-タス if (!ComValidation::isNumeric($param["pc_address_status"])) { $errMsg[] = "PCアドレスステ-タスを選択してください"; } // PC送信ステ-タス if (!ComValidation::isNumeric($param["pc_send_status"])) { $errMsg[] = "PC送信ステ-タスを選択してください"; } // PCメール受信設定 if (!ComValidation::isNumeric($param["pc_is_mailmagazine"])) { $errMsg[] = "PCメール受信設定を選択してください"; } // MBメールアドレス if (ComValidation::isValue($param["mb_address"]) and !ComValidation::isMobileAddress($param["mb_address"])) { $errMsg[] = "MBメールアドレスが正しくありません"; //} else if ($AdminUserOBJ->chkUserDataFromMbMailAddress($param["mb_address"], $param["user_id"])) { // $errMsg[] = "MBメールアドレスが重複しています"; } // MBアドレスステータス if (!ComValidation::isNumeric($param["mb_address_status"])) { $errMsg[] = "MBアドレスステータスを選択してください"; } // MB送信ステ-タス if (!ComValidation::isNumeric($param["mb_send_status"])) { $errMsg[] = "MB送信ステ-タスを選択してください"; } // MBメール受信設定 if (!ComValidation::isNumeric($param["mb_is_mailmagazine"])) { $errMsg[] = "MBメール受信設定を選択してください";
* @copyright 2009 Fraise, Inc. * @author mitsuhiro nakamura */ require_once D_BASE_DIR . "/common/post_common.php"; require_once $controllerOBJ->getIncludeBusinessLogic("postInclude"); $errSessOBJ = new ComSessionNamespace("err_msg"); $UserOBJ = User::getInstance(); $param = $requestOBJ->getParameterExcept($exceptArray); $mailAddressMB = $param["mb_mail_account"] . "@" . $param["mb_mail_domain"]; if ($param["login_id"] != $comUserData["login_id"]) { $errFlag = true; } if ($UserOBJ->createPasswordKey($param["password"]) != $comUserData["password"]) { $errFlag = true; } if (!ComValidation::isMobileAddress($mailAddressMB)) { $errFlag = true; } if (!ComValidation::isNumeric($param["q1"]) or $param["q1"] == 1 and !ComValidation::isNumeric($param["q6"]) or (!ComValidation::isNumeric($param["q2"]) or $param["q2"] == 1 and !ComValidation::isNumeric($param["q7"])) or (!ComValidation::isNumeric($param["q3"]) or $param["q3"] == 1 and !ComValidation::isNumeric($param["q8"])) or (!ComValidation::isNumeric($param["q4"]) or $param["q4"] == 1 and !ComValidation::isNumeric($param["q9"])) or (!ComValidation::isNumeric($param["q5"]) or $param["q5"] == 1 and !$param["q10"])) { $errFlag = true; } if ($errFlag) { $errSessOBJ->errMsg[] = "必須項目に入力漏れがあります"; header("Location: ./?action_Taikai=1" . ($comURLparam ? "&" . $comURLparam : "") . "&" . $sessId); exit; } $QuitRequestOBJ = QuitRequest::getInstance(); if (!$QuitRequestOBJ->getQuitRequestData($comUserDataId)) { // 退会申請情報をインサート $insertArray["user_id"] = $comUserDataId; $insertArray["create_datetime"] = date("YmdHis");
$whereArray = ""; $updateArray = ""; $insertAry = ""; $userAry = ""; $data = explode("\t", $getData[$i]); $userMailAddress = $data["0"]; $errorType = $data["1"]; if (!$userMailAddress) { continue; } // ユーザー情報を(メアドから)取得(MB/PCの切り分け) $userData = $UserOBJ->getAllUserDataFromMailAddress($userMailAddress); if (!$userData) { continue; } if (ComValidation::isMobileAddress($userMailAddress)) { $deviceCd = ErrorMailLog::DEVICE_TYPE_MB; } else { $deviceCd = ErrorMailLog::DEVICE_TYPE_PC; } // 解析結果から取得したメアドの存在チェック $logId = $emOBJ->isErrorMailLog($userData["user_id"], $userMailAddress); // 既に有ればエラーカウントのアップ if ($logId) { $whereArray[] = "id = " . $logId; // 更新用配列生成 $updateArray["error_count"] = "error_count + 1"; $updateArray["error_type"] = $errorType; $emOBJ->updateErrorMailLogData($updateArray, $whereArray, false); // 無ければ新規レコード追加 } else {
/** * mailToメソッド * * メール送信実行 * * @param array $$mailElements 送信する要素 * [from_address]:メール送信元アドレス * [from_name] :メール送信元名(任意) * [return_path] :リターンアドレス(任意) * [subject] :メールタイトル * [text_body] :メール本文(テキスト) * [html_body] :メール本文(HTML)(任意) * @return 送信成功:True 送信失敗:False */ public function mailTo($mailElements, $sec = 0, $imageData = null, $imageType = null) { if (!$mailElements["from_address"]) { // from_addressなくてもエラーでは無い場合があるので、tureで返却(送信処理はしない) return true; } //Get mobile domain name $SendMailOBJ = SendMail::getInstance(); if (ComValidation::isMobileAddress($mailElements["to_address"])) { $SendMailOBJ->setMailServerIp($this->_configOBJ->common_config->remail_mb_only->remail); } else { $SendMailOBJ->setMailServerIp($this->_configOBJ->common_config->smtp_mail_server_ip->remail); } return $SendMailOBJ->smtpMailTo($mailElements, $sec, $imageData, $imageType); }
$currentDateTime = date("Y-m-d H:i:s"); $accessKey = $UserOBJ->getNewAccessKey($currentDateTime); $remailKey = $UserOBJ->getNewRemailKey($currentDateTime); $password = ComUtility::getRamdomNumber(4); $userAry = array("login_id" => $param["mail_address"], "password" => $UserOBJ->createPasswordKey($password), "access_key" => $accessKey, "remail_key" => $remailKey, "regist_status" => $registStatus, "media_cd" => $aryAffiliateValue["advcd"], "regist_page_id" => $preRegistData["regist_page_id"], "affiliate_value" => $preRegistData["affiliate_value"], "pre_regist_datetime" => $currentDateTime, "update_datetime" => $currentDateTime); if ($adCdRule16Flag) { $userAry["affiliate_first_cd"] = substr($aryAffiliateValue["advcd"], 0, 4); $userAry["affiliate_last_cd"] = substr($aryAffiliateValue["advcd"], 4, 4); $userAry["affiliate_ym_cd"] = substr($aryAffiliateValue["advcd"], 8, 2); $userAry["affiliate_media_cd"] = substr($aryAffiliateValue["advcd"], 10, 6); } if ($registStatus == $_config["define"]["USER_REGIST_STATUS_MEMBER"]) { $userAry["regist_datetime"] = $currentDateTime; } // 携帯メールアドレスである if (ComValidation::isMobileAddress($param["mail_address"])) { $mbFlag = true; } if ($mbFlag) { $deviceCd = $ComUtilityOBJ->getDeviceFromMailAddress($param["mail_address"]); $userAry["mb_address"] = $param["mail_address"]; $userAry["mb_device_cd"] = $deviceCd; } else { $userAry["pc_address"] = $param["mail_address"]; $userAry["pc_device_cd"] = $_config["define"]["DEVICE_PC"]; if ($preRegistData) { $userAry["pc_user_agent"] = $preRegistData["user_agent"]; $userAry["pc_ip_address"] = $preRegistData["ip_address"]; } } // 指定の媒体からの登録は、送信ステータスを『しない』にする
$debugMail["text_body"][] = "ordering_id:" . $val["id"]; $debugMail["text_body"][] = "user.id:" . $userData["user_id"]; $debugMail["text_body"][] = "send_device_type:PC"; $debugMail["text_body"][] = "err:" . $e->getMessage(); $debugMail["text_body"] = implode("\n", $debugMail["text_body"]); // システムにエラーメール $SendMailOBJ->debugMailTo($debugMail); } } } // MB送信 if (ComValidation::isMobileAddress($sendData["mb_to_address"]) and $userData["mb_address_status"] != $_config["define"]["ADDRESS_STATUS_DO"]) { $execMsgSessOBJ->exec_msg[] = "注文ID:" . $val["id"] . "のMBアドレスステータスが送信可能ではないので送信できませんでした。"; $sendCnt["notSendMbCnt"]++; } else { if (ComValidation::isMobileAddress($sendData["mb_to_address"])) { $mbSendMailData = ""; $sendData["to_address"] = $sendData["mb_to_address"]; $sendData["subject"] = $mbSubject; $sendData["text_body"] = $mbTextBody; $sendData = $AdmSupportMailOBJ->convertMailElements($sendData, $orderingData["user_id"], $setArray); $mbSendMailData = $AdmSupportMailOBJ->smtpMailTo($sendData, $second); try { if (!$ComSendMagicDeliveryOBJ->sendMagicDelivery($mbSendMailData)) { $execMsgSessOBJ->exec_msg[] = "注文ID:" . $val["id"] . "のMBアドレスに送信できませんでした。"; $sendCnt["notSendMbCnt"]++; } else { $sendCnt["sendMbCnt"]++; $insertData["mb_subject"] = $sendData["subject"]; $insertData["mb_text_body"] = $sendData["text_body"]; }
/** * * 「退会者」and「ブラック有効」ユーザーチェック * * @param string $addressDomain 登録アドレスドメイン * @param string $mbSerialNumber 個体識別番号 * * @return boolean データあればTRUE、なければFALSE */ public function chkQuitBlackUser($mailAddress, $mbSerialNumber = "") { if (!$mailAddress) { return false; } $whereString = ""; $columnArray[] = "*"; if (ComValidation::isMobileAddress($mailAddress)) { if ($mbSerialNumber) { $whereString .= " OR mb_serial_number = '" . $mbSerialNumber . "'"; } $whereArray[] = "(mb_address = '" . $mailAddress . "'" . $whereString . ")"; } else { $whereArray[] = "pc_address = '" . $mailAddress . "'"; } $whereArray[] = "regist_status = " . $this->_configOBJ->define->USER_REGIST_STATUS_MEMBER_QUIT; $whereArray[] = "danger_status = " . $this->_configOBJ->define->DANGER_VALID; $whereArray[] = "user_disable = 0"; $otherArray[] = "LIMIT 1"; $sql = $this->makeSelectQuery("v_user_profile", $columnArray, $whereArray, $otherArray); if (!($data = $this->executeQuery($sql, "fetchRow"))) { return FALSE; } return $data; }
} } // mb送信 $isMbSend = FALSE; if ($mbTextBody or $mbHtmlBody) { //MBアドレスステ-タス,MBメアド送信ステータス,MBメアド配信ステータスの有効性をチェック if ($userData["mb_send_status"] == $_config["define"]["ADDRESS_SEND_STATUS_FAIL"]) { $sendCnt["notSendMbCnt"]++; } else { if ($userData["mb_is_mailmagazine"] == $_config["define"]["ADDRESS_SEND_STATUS_FAIL"]) { $sendCnt["notSendMbCnt"]++; } else { if (ComValidation::isMobileAddress($userData["mb_address"]) and $userData["mb_address_status"] != $_config["define"]["ADDRESS_STATUS_DO"]) { $sendCnt["notSendMbCnt"]++; } else { if (ComValidation::isMobileAddress($userData["mb_address"])) { //配信アドレス作成処理。mb_mailmagazine_from_domain_idカラムのデータを元に、配信ドメインを決定。 if ($changeFromAddressFlag) { $listValue["from_address"] = ""; $sendMailDomainArray = $_config["define"]["SEND_MAIL_DOMAIN"]; //$sendMailDomainArray配列から万が一、値を引っ張ってこれなかったらを考え、一応のif文 if ($sendMailDomainArray[$userData["mb_mailmagazine_from_domain_id"]]) { $listValue["from_address"] = $fromAddressAry[0] . "@" . $sendMailDomainArray[$userData["mb_mailmagazine_from_domain_id"]]; } else { $listValue["from_address"] = $fromAddressAry[0] . "@" . $_config["define"]["MAIL_DOMAIN"]; } } $mailData = null; $mailData = array("to_address" => $userData["mb_address"], "return_path" => $return, "from_address" => $listValue["from_address"], "from_name" => $fromName, "subject" => $mbSubject, "text_body" => $mbTextBody, "html_body" => $mbHtmlBody); $mailElements = $AdmSupportMailOBJ->convertMailElements($mailData, $userData["user_id"], $setArray); $mbSendMailData = "";
/** * * リメールデータを取得 * * @param integer $registPageId 登録ページID * @param string $mailAddress メールアドレス * * @return array $mailElements データリスト配列 */ public function getRegistPageMailData($registPageId, $mailAddress) { if (!$registPageId or !$mailAddress) { return FALSE; } $mailElementsData = self::getRegistPageData($registPageId); $fromName = htmlspecialchars_decode($mailElementsData["from_name"], ENT_QUOTES); if (ComValidation::isMobileAddress($mailAddress)) { $subject = htmlspecialchars_decode($mailElementsData["mb_subject"], ENT_QUOTES); $textBody = htmlspecialchars_decode($mailElementsData["mb_text_body"], ENT_QUOTES); $textBodySecond = htmlspecialchars_decode($mailElementsData["mb_text_body_second"], ENT_QUOTES); $htmlBody = htmlspecialchars_decode($mailElementsData["mb_html_body"], ENT_QUOTES); $mailElementsImgData = self::getRegistPageImageData($registPageId, true); } else { $subject = htmlspecialchars_decode($mailElementsData["pc_subject"], ENT_QUOTES); $textBody = htmlspecialchars_decode($mailElementsData["pc_text_body"], ENT_QUOTES); $textBodySecond = htmlspecialchars_decode($mailElementsData["pc_text_body_second"], ENT_QUOTES); $htmlBody = htmlspecialchars_decode($mailElementsData["pc_html_body"], ENT_QUOTES); $mailElementsImgData = self::getRegistPageImageData($registPageId, false); } $mailElements["elements"] = array("to_address" => $mailAddress, "from_address" => $mailElementsData["from_address"], "from_name" => $fromName, "return_path" => $mailElementsData["return_path"], "subject" => $subject, "text_body" => $textBody, "text_body_second" => $textBodySecond, "html_body" => $htmlBody); for ($i = 0; $i < count($mailElementsImgData); $i++) { if ($mailElementsImgData[$i]["file_name"]) { $mailElements["image_data"][$i] = file_get_contents(D_BASE_DIR . self::REGIST_PAGE_IMAGE_PATH . $mailElementsImgData[$i]["file_name"]); $size = getimagesize(D_BASE_DIR . self::REGIST_PAGE_IMAGE_PATH . $mailElementsImgData[$i]["file_name"]); $mailElements["image_type"][$i] = $size["mime"]; } } return $mailElements; }