ポイント
confirmとsendとの受け渡しにsessionを使っています。
$autoload['libraries'] = array('form_validation', 'session');
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Sendmail extends CI_Controller {
public function _set_validation() {
$vconfig = array(
array(
'field' => 'name',
'label' => 'お名前',
'rules' => 'trim|required|max_length[20]|xss_clean'
),
array(
'field' => 'mail',
'label' => 'メール',
'rules' => 'trim|required|valid_email'
),
array(
'field' => 'subject',
'label' => '題名',
'rules' => 'trim|required|max_length[40]|xss_clean'
),
array(
'field' => 'body',
'label' => 'お取り合わせ',
'rules' => 'trim|required|xss_clean'
),
);
$this->form_validation->set_rules($vconfig);
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
}
public function index() {
$data['title']='メールフォーム';
$data['description']='メールフォームです。';
$this->load->view('mailform',$data);
}
public function confirm() {
self::_set_validation();
if ($this->form_validation->run() == FALSE)
{
self::index();
}
else
{
$sdata['mail'] = array(
'name' => $this->input->post('name'),
'mail' => $this->input->post('mail'),
'subject' => $this->input->post('subject'),
'body' => $this->input->post('body')
);
$this->session->set_userdata($sdata);
$data['title']='メール確認';
$data['name'] = htmlentities(
$this->input->post('name'),ENT_COMPAT,"UTF-8"
);
$data['mail'] = $this->input->post('mail');
$data['subject'] = htmlentities(
$this->input->post('subject'),ENT_COMPAT,"UTF-8"
);
$data['body'] = nl2br(htmlentities(
$this->input->post('body'),ENT_COMPAT,"UTF-8"
));
$this->load->view('confirm',$data);
}
}
public function send() {
$data['title']='お問い合わせ完了';
if(self::_send()) {
$data['messages'] = 'お問い合わせを承りました。';
} else {
$data['messages'] = '申し訳ございません。<br />電話にて 連絡をお願いいたします。';
}
$this->load->view('send',$data);
}
public function _send() {
$sdata = $this->session->userdata('mail');
if(empty($sdata['name'])) return FALSE;
$this->session->unset_userdata('mail');
$FromName = "自動送信";
$From = "yamanoi@tsukuba-g.ac.jp";
$To = "yamanoi@tsukuba-g.ac.jp";
$Subject = "問い合わせメール";
$Body = <<<EOLN
お名前:{$sdata['name']}
メールアドレス:{$sdata['mail']}
題名:{$sdata['subject']}
内容:
{$sdata['body']}
EOLN;
$this->load->library('email');
$config['protocol'] = 'mail';
$config['charset'] = 'ISO-2022-JP';
$config['wordwrap'] = FALSE;
$this->email->initialize($config);
$from_name = $FromName;
$from = $From;
$to = $To;
$subject = $Subject;
$body = $Body;
$from_name = mb_encode_mimeheader($from_name, 'ISO-2022-JP','Q');
$subject = mb_convert_encoding($subject, 'ISO-2022-JP', 'UTF-8');
$body = mb_convert_encoding($body, 'ISO-2022-JP', 'UTF-8');
$this->email->from($from,$from_name);
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($body);
if( $this->email->send() ) {
return TRUE;
} else {
return FALSE;
}
}
}
<?php $this->load->view('elements/header');?>
<h1>お問い合わせありがとうございます。</h1>
<div id="message">
<?php echo $messages; ?>
</div>
<?php $this->load->view('elements/footer');?>