こんにちは、ひろゆきです。
今日は、CodeIgniterでテンプレートを使用してメールを送信する方法をメモとして残したいと思います。
1. テンプレートの準備
「application/views」の下に「template/mail」ディレクトリを作成して、メールのテンプレートとなるcontact.phpを配置します。contact.phpの内容は、以下のように書きます。
{name}さまからお問い合わせがありました。
====お問い合わせ内容======
■お名前
{name}さま
■メールアドレス
{mail}
■電話番号
{tel}
<?php if(isset($zip) && $zip != ''): ?>
■郵便番号
{zip}
<?php endif; ?>
<?php if(isset($address) && $address != ''): ?>
■住所
{address}
<?php endif; ?>
■問い合わせ内容
{contact_body}
==========================
今回は、お問い合わせフォームのメール送信を例にして書いてみました。
また、郵便番号と住所は任意入力とし、ない場合は項目自体を非表示にする作りにしてみました。
2. テンプレートパーサ呼び出し
次に、メール送信処理の際に以下を記述します。
今回はコントローラーにてメール送信処理を記述します。
(本来は入力画面から受け取った値にバリデーションチェックをかけた値をセットしますが、割愛します。)
・
・
・
// テンプレートに渡す値の設定
$data = array();
$data['name'] = '大田 博之';
$data['mail'] = 'test@example.com';
$data['tel'] = '03-xxxx-xxxx';
$data['zip'] = '110-0015';
$data['address'] = '';
$data['contact_body'] = 'お問い合わせ内容';
// パーサーロード
$this->load->library('parser');
// テンプレートに変数をアサイン
$message = $this->parser->parse('template/mail/contact', $data, TRUE);
・
・
・
3. メール送信
後はいつも通りメールを送る処理を記述するだけです。
「2」で生成した$messageをセットします。
・
・
・
// メールライブラリをロード
$this->load->library('email');
$this->email->from($data['mail'], mb_encode_mimeheader($data['name'], 'UTF-8', 'B'));
$this->email->to('hogehoge@liginc.co.jp');
$this->email->subject('お問い合わせを受け付けました');
$this->email->message($message);
// メール送信
$this->email->send();
・
・
・
以上となります。
まとめ
いかがでしたでしょうか?
CodeIgniterはこういった処理もサクッと書けて便利ですね!
今回は、よく実装するテンプレートを使用してメールを送信する方法を書いてみました。
それでは、また。
【フレームワークを使用してサクッとコード記述】
※ Web開発フレームワーク「CodeIgniter」でデバイス別テーマ切り替えを実装する方法
※ Web制作者でもネイティブアプリが作れる!node-webkitを使ってみよう
※ WordPressで「Blade」テンプレートエンジンを使おう!
※ カスタマイズ性抜群!Sassに対応したCSSフレームワークがアツイ!
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。