端くれプログラマの備忘録 CakePHP [CakePHP] CakeEmailの使い方

[CakePHP] CakeEmailの使い方

CakePHPにはメール送信のためのコアライブラリが用意されている。以下、管理者へ簡単な通知メールを送信する前提での基本的な使い方覚え書き。

設定 app/Config/email.php

class EmailConfig {
    public $notify = array(
        'transport' => 'Mail',
        'from' => 'foo@example.com',
        'to' => 'recipient@example.com',
        'sendAs' => 'text', //メール形式はテキスト
        'log' => true,      //念のためログを記録 (app/tmpに生成される)
    );
}

メールレイアウト app/View/Layout/Emails/text/notify.ctp

<?php echo $this->fetch('content'); ?>

メールビュー app/View/Emails/text/notify.ctp

Notification: <?php echo $body; ?>

送信処理 (コントローラ)

$vars = array('body' => 'Hello, world'); //メール本文

App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail();
$email->config('contact');
if (!$email
    ->replyTo('webmaster@example.com')
    ->subject('Notification')
    ->viewVars($vars)              //テンプレートに値をセット
    ->template('notify', 'notify') //引数はビュー,レイアウト
    ->send()) {
    //送信失敗
}

参考サイト

CakeEmail — CakePHP Cookbook 2.x documentation
http://book.cakephp.org/2.0/en/core-utility-libraries/email.html