Exemple #1
0
if ($compDel && $_REQUEST["mode"] == "delete_all_folder") {
    $sql = "UPDATE info_mail SET" . " dir_id = 0" . " WHERE dir_id = 4";
    $db->executeSql($sql, array());
    exit("削除フォルダを空にしました。");
}
$infoIdAry = $_REQUEST["info_id"];
foreach ($infoIdAry as $value) {
    if (is_numeric($value)) {
        // $valueで指定されたメール情報をDBから取得する
        $sql = "SELECT * FROM info_mail WHERE info_id = " . $value . ";";
        $rs = $db->executeSql($sql, array());
        $infoMail = NULL;
        if ($rs->numRows() > 0) {
            $record = $rs->fetchRow(DB_FETCHMODE_ASSOC);
            // DBから取得したメール情報をオブジェクトとして格納する
            $infoMail = new InfoMail($record, $db);
            if ($compDel) {
                $infoMail->updateDirId(0);
                $dirName = "メールを完全に削除しました。";
            } else {
                if ($_REQUEST["mode"] == "already_all") {
                    $infoMail->updateReplyStatus(ALREADY_REPLIED);
                    $dirName = "メールを対応済みにしました。";
                } else {
                    if ($_REQUEST["mode"] == "retire_all") {
                        $infoMail->updateRetireStatus($define);
                        $dirName = "退会にしました。";
                    } else {
                        if ($_REQUEST["mode"] == "stop_all") {
                            $infoMail->updateMailStatus($define);
                            $dirName = "配信停止にしました。";
Exemple #2
0
        exit;
    }
}
//------------------------
// 表示メールデータの取得
//------------------------
// $_REQUEST[info_id]で指定されたメール情報をDBから取得する
$sql = " SELECT *,SUBSTRING(from_name,1,LOCATE('@',from_name)) as from_name_no_domain" . " FROM info_mail" . " WHERE info_id = ? ";
$key = array();
$key[] = $_REQUEST["info_id"];
$rs = $db->executeSql($sql, $key);
if ($rs->numRows() > 0) {
    $array = $rs->fetchRow(DB_FETCHMODE_ASSOC);
    // DBから取得したメール情報をオブジェクトとして格納する
    $infoMail = null;
    $infoMail = new InfoMail($array, $db);
    // 状態フラグが未読なら既読に変更する
    if ($infoMail->readStatus == UNREAD_MAIL) {
        $infoMail->updateReadStatus(READED_MAIL);
    }
    // 更新用フラグが送られていれば、担当者or対応状況を更新する
    if (isset($_REQUEST["update"])) {
        if (isset($_REQUEST["new_operator_id"])) {
            $infoMail->updateOperatorId($_REQUEST["new_operator_id"]);
        }
        if (isset($_REQUEST["new_reply_status"])) {
            $infoMail->updateReplyStatus($_REQUEST["new_reply_status"]);
        }
    }
    /*else {
          // 表示メールデータの担当者が未対応の場合、ログインユーザーを設定(更新)する
Exemple #3
0
    exit("本文を入力してください");
}
// メールアカウントのチェック
if (empty($site["site_account"][$_REQUEST["from_address"]]["from"])) {
    print "メールアカウントが不正です";
    exit;
}
// 担当者IDのチェック
if (!is_numeric($_REQUEST["new_operator_id"])) {
    exit("担当者IDが不正です");
}
//------------------------
// メール送信&DB格納処理
//------------------------
// 新規なのでユーザー情報なし
$infoMail = new InfoMail(array(), $db);
$toAddressStr = "";
$userAddressAry = $_REQUEST["user_address"];
// リストからメール送信処理
foreach ($userAddressAry as $key => $toAddressStr) {
    if (ereg("[a-zA-Z0-9_.+-\\/?]+@[a-zA-Z0-9_.\\-]+", $toAddressStr)) {
        //インサート用配列生成
        $params = array("From" => $site["from_address"][$_REQUEST["from_address"]]["from"], "FromName" => $_REQUEST["fromName"], "To" => $toAddressStr, "Subject" => $_REQUEST["subject"], "plain" => $_REQUEST["body"], "opeId" => $_REQUEST["new_operator_id"]);
        //メールデータ格納
        $infoMail->addInfoMail($params);
    } else {
        if ($toAddressStr) {
            print "不正なアドレスの可能性があります。 => " . $toAddressStr;
            exit;
        }
    }
 /**
  * SMTP接続を開始する。
  *
  * @param
  *
  * @return boolean
  */
 public function openSmtpConnect()
 {
     // 未接続なら接続処理
     if (!$this->smtp_conn) {
         $mailServerIpAry = array();
         // IPが空ならデフォルトセット
         if (!$this->_smtpMailServerIp) {
             // デフォルト(通常)
             $this->setSendMailServerIp(self::DEFAULT_SMTP_SEND_MAIL_IP);
         }
         // ホストとポートに分ける
         $mailServerIpAry = explode(":", $this->_smtpMailServerIp);
         // host
         $host = $mailServerIpAry[0];
         // port
         $port = $mailServerIpAry[1];
         // 接続先をセット
         $this->setSmtpHost($host, (int) $port);
         // 接続
         try {
             // 接続出来なければ、リトライ(指定秒間隔)
             for ($cnt = 0; $cnt < $this->_retrySmtpConnCnt; $cnt++) {
                 // 接続確立
                 if ($this->_openSmtpConn()) {
                     break;
                 }
                 // 10秒インターバル
                 sleep($this->_retrySmtpInterval);
             }
             // それもダメならさよなら。
             if (!$this->getSmtpConnect()) {
                 return false;
             }
             // 接続後、最初に必要なSMTPコマンドをここでやっちゃおう!!
             if (!$this->_sendSmtpCommand("helo " . $this->smtp_host, array(220, 250, 354))) {
                 return false;
             }
         } catch (Zend_Exception $e) {
             // デバッグメール
             $InfoMailOBJ = new InfoMail();
             $debugMail = "";
             $debugMail["subject"] = "SMTP接続エラー";
             $debugMail["text_body"][] = "file:" . __FILE__;
             $debugMail["text_body"][] = "line:" . __LINE__;
             $debugMail["text_body"][] = "err:" . $e->getMessage();
             $debugMail["text_body"][] = "server_ip:" . $this->_smtpMailServerIp;
             $debugMail["text_body"] = implode("\n", $debugMail["text_body"]);
             // システムにエラーメール
             $InfoMailOBJ->debugMailTo($debugMail);
         }
     }
     return true;
 }
Exemple #5
0
//foreach ($toAddressAry as $key => $value) {
//    $toAddressAry[$key] = trim($toAddressAry[$key]);
//}
$ccAddressAry = explode(",", $_REQUEST["cc_address"]);
foreach ($ccAddressAry as $key => $value) {
    $ccAddressAry[$key] = trim($ccAddressAry[$key]);
}
// 上で取得した配列を一つにまとめる
$addressArray = array_merge((array) $toAddressAry, (array) $ccAddressAry);
// $_REQUEST[mail_id]で指定されたメール情報をDBから取得する
$sql = " SELECT *,SUBSTRING(from_name,1,LOCATE('@',from_address)) as from_name_no_domain " . " FROM info_mail " . " WHERE info_id = ? ";
$key = array($_REQUEST["info_id"]);
$rs = $db->executeSql($sql, $key);
if ($rs->numRows() > 0) {
    // DBから取得したメール情報を格納する
    $infoMail = new InfoMail($rs->fetchRow(DB_FETCHMODE_ASSOC), $db);
    // 返信したメールの担当者を更新する
    $infoMail->updateOperatorId($_REQUEST["new_operator_id"]);
    // 返信したメールの対応状況を更新する
    $infoMail->updateReplyStatus($_REQUEST["new_reply_status"]);
    //宛先を更新
    array_unshift($addressArray, $infoMail->fromAddress);
    //アドレス表示制限
    if ($loginAdminData["authority_type"] == $define["define"]["AUTHORITY_TYPE_OPERATOR"]) {
        $toAddressAry[] = $infoMail->fromNameNoDomain . "<ドメイン非表示>";
    } else {
        if ($loginAdminData["authority_type"] == $define["define"]["AUTHORITY_TYPE_SYSTEM"] or $loginAdminData["authority_type"] == $define["define"]["AUTHORITY_TYPE_MANAGE"] or $loginAdminData["authority_type"] == $define["define"]["AUTHORITY_TYPE_INFORMATION"]) {
            $toAddressAry[] = $infoMail->fromAddress;
        } else {
            $toAddressAry[] = "<アドレス非表示>";
        }
Exemple #6
0
    die("表示できません");
}
// move.phpを表示するには$_REQUEST[new_dir_id]が必須
if (empty($_REQUEST["new_dir_id"]) || !is_numeric($_REQUEST["new_dir_id"])) {
    die("表示できません");
}
// $_REQUEST[mail_id]で指定されたメール情報をDBから取得する
$sql = "SELECT *" . " FROM info_mail" . " WHERE info_id = ?";
$rs = $db->executeSql($sql, array($_REQUEST["info_id"]));
//--------------------------------------
// 移動対象メールデータの取得&移動処理
//--------------------------------------
$infoMail = NULL;
if ($rs->numRows() > 0) {
    // DBから取得したメール情報をオブジェクトとして格納する
    $infoMail = new InfoMail($rs->fetchRow(DB_FETCHMODE_ASSOC), $db);
    // 削除済みフォルダにあるメールをさらに削除しようとした場合は完全削除処理を行う
    if ($infoMail->dirId == DELETE_DIR && $_REQUEST["new_dir_id"] == DELETE_DIR) {
        // 完全削除時は完全削除パス入力が必須
        if (md5($_REQUEST["del_pass"]) != $delPw) {
            // $delPw: config.ini内で宣言
            die("完全削除パスが違います!!");
        }
        $compDel = TRUE;
        // 完全削除フラグON
    } else {
        $compDel = FALSE;
        // 通常のフォルダ移動の場合
    }
    // 移動前のフォルダIDを残しておく
    $oldDirId = $infoMail->dirId;
    }
}
//$toAddressStr = "";
$toUserIdStr = "";
$infoIdAry = $_REQUEST["info_id"];
foreach ($infoIdAry as $value) {
    if (is_numeric($value)) {
        // $valueで指定されたメール情報をDBから取得する
        $sql = "SELECT * FROM info_mail" . " WHERE info_id = ? ";
        $key = array();
        $key[] = $value;
        $rs = $db->executeSql($sql, $key);
        if ($rs->numRows() > 0) {
            $record = $rs->fetchRow(DB_FETCHMODE_ASSOC);
            // DBから取得したメール情報をオブジェクトとして格納する
            $infoMail = new InfoMail($record, $db);
            // メールアドレスのチェック
            if (ereg("[a-zA-Z0-9_.\\-]+@[a-zA-Z0-9_.\\-]+", $infoMail->fromAddress)) {
                // 返信したメールの担当者を更新する
                $infoMail->updateOperatorId($_REQUEST["new_operator_id"]);
                // 返信したメールの対応状況を更新する
                $infoMail->updateReplyStatus($_REQUEST["new_reply_status"]);
                //インサート用配列生成
                $params = array("From" => $site["from_address"][$_REQUEST["from_address"]]["from"], "FromName" => $_REQUEST["fromName"], "To" => $infoMail->fromAddress, "Subject" => $_REQUEST["subject"], "plain" => $_REQUEST["body"], "opeId" => $_REQUEST["new_operator_id"]);
                //メールデータ格納
                $infoMail->addInfoMail($params);
                //送信実行処理
                $sendUrlArray = $infoMail->mail_server_array;
                $sendUrl = $sendUrlArray[$_REQUEST["select_send_mail"]];
                $convertArray = array("%site_name%" => $site["site_account"][$_REQUEST["from_address"]]["name"], "%domain%" => $site["site_account"][$_REQUEST["from_address"]]["domain"], "%info_account%" => $site["site_account"][$_REQUEST["from_address"]]["info"], "%teishi_account%" => $site["site_account"][$_REQUEST["from_address"]]["teishi"]);
                $_REQUEST["body"] = str_replace(array_keys($convertArray), array_values($convertArray), $_REQUEST["body"]);
//--------------------------------
// リクエスト送信データのチェック
//--------------------------------
if (empty($_REQUEST["info_id"]) || !is_numeric($_REQUEST["user_id"])) {
    die("表示できません");
}
// $_REQUEST[info_id]で指定されたメール情報をDBから取得する
$sql = "SELECT *" . " FROM info_mail as im, user as u" . " WHERE im.info_id = ?" . " AND u.id = ?" . " AND u.id = im.user_id";
$rs = $db->executeSql($sql, array($_REQUEST["info_id"], $_REQUEST["user_id"]));
//--------------------------------------
// 移動対象メールデータの取得&移動処理
//--------------------------------------
$infoMail = NULL;
if ($rs->numRows() > 0) {
    // DBから取得したメール情報をオブジェクトとして格納する
    $infoMail = new InfoMail($rs->fetchRow(DB_FETCHMODE_ASSOC), $db);
    if ($_REQUEST["mode"] == "retire") {
        $infoMail->updateRetireStatus($define);
        $dirName = "退会にしました。";
    } else {
        if ($_REQUEST["mode"] == "stop") {
            $infoMail->updateMailStatus($define);
            $dirName = "配信停止にしました。";
        } else {
            if ($_REQUEST["mode"] == "danger_on") {
                $infoMail->updateDangerStatus($define);
                $dirName = "ブラックを有効にしました。";
            } else {
                if ($_REQUEST["mode"] == "danger_off") {
                    $infoMail->updateDangerStatusForRescission($define);
                    $dirName = "ブラックを解除しました。";
Exemple #9
0
//------------------------
// メール送信&DB格納処理
//------------------------
// 宛先とCCの送信メールアドレスを配列として格納する
$toAddressAry = explode(",", $_REQUEST["to_address"]);
foreach ($toAddressAry as $key => $value) {
    $toAddressAry[$key] = trim($value);
}
$ccAddressAry = explode(",", $_REQUEST["cc_address"]);
foreach ($ccAddressAry as $key => $value) {
    $ccAddressAry[$key] = trim($value);
}
// 上で取得した配列を一つにまとめる
$addressArray = array_merge($toAddressAry, $ccAddressAry);
// 新規なのでユーザー情報なし
$infoMail = new InfoMail(array(), $db);
// 宛先&CCメールアドレスへの送信処理
foreach ($addressArray as $key => $value) {
    if (ereg("[a-zA-Z0-9_.+-\\/?]+@[a-zA-Z0-9_.\\-]+", $addressArray[$key])) {
        // 最初の1通目のみDBに送信メールデータを格納する
        if ($key == 0) {
            //インサート用配列生成
            $params = array("From" => $site["from_address"][$_REQUEST["from_address"]]["from"], "FromName" => $_REQUEST["fromName"], "To" => $addressArray[$key], "Subject" => $_REQUEST["subject"], "plain" => $_REQUEST["body"], "opeId" => $_REQUEST["new_operator_id"]);
            //メールデータ格納
            $infoMail->addInfoMail($params);
        }
    } else {
        if ($addressArray[$key]) {
            print "不正なアドレスの可能性があります。 => " . $addressArray[$key];
            exit;
        }