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