MailController::_sendEmail PHP Method

_sendEmail() protected method

メール送信する
protected _sendEmail ( ) : void
return void
    protected function _sendEmail()
    {
        $mailConfig = $this->dbDatas['mailConfig']['MailConfig'];
        $mailContent = $this->dbDatas['mailContent']['MailContent'];
        $userMail = '';
        // データを整形
        $data = $this->MailMessage->restoreData($this->MailMessage->convertToDb($this->request->data));
        $data['message'] = $data['MailMessage'];
        unset($data['MailMessage']);
        $data['mailFields'] = $this->dbDatas['mailFields'];
        $data['mailContents'] = $this->dbDatas['mailContent']['MailContent'];
        $data['mailConfig'] = $this->dbDatas['mailConfig']['MailConfig'];
        $data['other']['date'] = date('Y/m/d H:i');
        $data = $this->MailMessage->convertDatasToMail($data);
        // 管理者メールを取得
        if ($mailContent['sender_1']) {
            $adminMail = $mailContent['sender_1'];
        } else {
            $adminMail = $this->siteConfigs['email'];
        }
        if (strpos($adminMail, ',') !== false) {
            list($fromAdmin) = explode(',', $adminMail);
        } else {
            $fromAdmin = $adminMail;
        }
        $attachments = array();
        $settings = $this->MailMessage->Behaviors->BcUpload->settings['MailMessage'];
        foreach ($this->dbDatas['mailFields'] as $mailField) {
            $field = $mailField['MailField']['field_name'];
            if (!isset($data['message'][$field])) {
                continue;
            }
            $value = $data['message'][$field];
            // ユーザーメールを取得
            if ($mailField['MailField']['type'] == 'email' && $value) {
                $userMail = $value;
            }
            // 件名にフィールドの値を埋め込む
            // 和暦など配列の場合は無視
            if (!is_array($value)) {
                if ($mailField['MailField']['type'] == 'radio' || $mailField['MailField']['type'] == 'select') {
                    $source = explode('|', $mailField['MailField']['source']);
                    if (!empty($value)) {
                        $mailContent['subject_user'] = str_replace('{$' . $field . '}', $source[$value - 1], $mailContent['subject_user']);
                        $mailContent['subject_admin'] = str_replace('{$' . $field . '}', $source[$value - 1], $mailContent['subject_admin']);
                    }
                } else {
                    $mailContent['subject_user'] = str_replace('{$' . $field . '}', $value, $mailContent['subject_user']);
                    $mailContent['subject_admin'] = str_replace('{$' . $field . '}', $value, $mailContent['subject_admin']);
                }
            }
            if ($mailField['MailField']['type'] == 'file' && $value) {
                $attachments[] = WWW_ROOT . 'files' . DS . $settings['saveDir'] . DS . $value;
            }
        }
        // 前バージョンとの互換性の為 type が email じゃない場合にも取得できるようにしておく
        if (!$userMail) {
            if (!empty($data['message']['email'])) {
                $userMail = $data['message']['email'];
            } elseif (!empty($data['message']['email_1'])) {
                $userMail = $data['message']['email_1'];
            }
        }
        // ユーザーに送信
        if (!empty($userMail)) {
            $data['other']['mode'] = 'user';
            $options = array('fromName' => $mailContent['sender_name'], 'from' => $fromAdmin, 'template' => 'Mail.' . $mailContent['mail_template'], 'replyTo' => $fromAdmin, 'attachments' => $attachments, 'additionalParameters' => '-f ' . $fromAdmin);
            $this->sendMail($userMail, $mailContent['subject_user'], $data, $options);
        }
        // 管理者に送信
        if (!empty($adminMail)) {
            $data['other']['mode'] = 'admin';
            $options = array('fromName' => $mailContent['sender_name'], 'replyTo' => $userMail, 'from' => $fromAdmin, 'template' => 'Mail.' . $mailContent['mail_template'], 'bcc' => $mailContent['sender_2'], 'agentTemplate' => false, 'attachments' => $attachments, 'additionalParameters' => '-f ' . $fromAdmin);
            $this->sendMail($adminMail, $mailContent['subject_admin'], $data, $options);
        }
    }