altere5's blog

I thought what I'd do was, I'd pretend I was one of those deaf-mutes. ( or shou'd i ? )

CakePHPのお勉強 6回目 メールによる通知

ここまでの作業でお問い合わせの入力、そして一覧での確認ができるようになった。
とはいえ、いつお問い合わせが行われるか分からない事を考えるといちいち一覧を確認するのは現実的ではない。

そこで今回は、お問い合わせがあった場合はメールで通知するようにする。

(1) メールの送信設定

CakePHPのメールの設定は「Config/email.php」の中に設定する。

    public $noticeadmin = array(
        'transport' => 'Mail',
        'from' => array('送信元アドレス' => '送信元名'), 
        'replyTo' => array('返信先アドレス' => '返信先名'), 
        'to' => array('送信先アドレス' => '送信先名'), 
        'charset' => 'utf-8',
        'headerCharset' => 'utf-8',
        'emailFormat' => 'text',
    );

この設定を「email.php」に追加する。

(2) 送信処理の追加

コントローラの「thanks」アクションにメールの送信処理を追加。

<?php

App::uses('CakeEmail', 'Network/Email');

class ContactsController extends AppController {

    // indexアクション
    public function index() {}

    // thanksアクション
    public function thanks() {

        if($this->request->is('post')) {

            $this->Contact->set($this->request->data);

            if($this->Contact->validates()) {

                $this->Contact->create();
                $this->Contact->save($this->request->data);

                //POSTデータを受け取った場合の処理を記述
                $this->set('username', $this->request->data['username']);

                //管理者宛てにメールを送信
                $cakeemail = new CakeEmail('noticeadmin');
                $cakeemail->subject('お問い合わせがありました');
                $cakeemail->send("お問い合わせがありましたので確認してください。");

            } else {

                $this->render('reinput');

            }

        } else {

            $this->redirect('index');

        }

    }

    // listアクション
    public function contactlist() {

        $this->set('contacts', $this->Contact->find('all'));

    }

}
 

3行目でメール送信時に必要なコアライブラリを利用する設定を実施。
25行目から28行目でメールの送信処理を追加。
26行目で「email.php」で追加した際に設定した設定名(noticeadmin)を選択する事でその設定で送信が可能。

(3) 動作の確認

この状態でお問い合わせが行われるとメールで通知が行われる。

f:id:altere5:20131116221800p:plain

無事メールで通知が行われている。