メール送信をmodelとして分離しました。
Filename: models/mail_model.php
<?php
class Mail_model extends CI_Model {
public function sendmail($mail) {
$this->load->library('email');
$config['protocol'] = 'mail';
$config['charset'] = 'ISO-2022-JP';
$config['wordwrap'] = FALSE;
$this->email->initialize($config);
$from_name = $mail['from_name'];
$from = $mail['from'];
$to = $mail['to'];
$subject = $mail['subject'];
$body = $mail['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;
}
}
}
Filename: controller/sendmail.phpを変更
<?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');
$mail = array(
'from_name' => '自動送信',
'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->model('mail_model');
return $this->mail_model->sendmail($mail);
}
}