cakeEmail を gmail 経由でメールする。
CakePHP2.0には、CakeEmaiという超絶便利なコンポーネントがあるらしい。phpmailerよりも簡単に使えるらしい。
なので、設定と動作確認してみました。
参考サイト
CakeEmail Cookbook v2.x documentation
cakePHP2.1でcakeEmailを使う。
[CakePHP2.0]CakeEmailでテンプレートを使ってメール送信
Config 設定
app/Configフォルダにemail.php.defaultファイルがありますので、defaultを取って利用します。
app/Config/email.php
class EmailConfig {
public $default = array(
'transport' => 'Smtp',
'from' => array('*****@gmail.com' => '表示名'),
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => '*****@gmail.com',
'password' => '******',
'log' => true//ここをtrueにするとtmp/debug.logにメールのログが書かれる。
//'headerCharset' => 'utf-8',
);
}
レイアウト設定
レイアウトは、ベースのレイアウトと、送信内容のレイアウトを2つ作成します。メールの形式はtext用とhtml用が用意出来ますがそうするとそれぞれ2個づつ必要になります。私の場合にはHTMLメールを送信することが殆ど無いのでtextのみ用意します。
View/Layouts/Emails/text/my_layout.ctp
<!--?php echo $content_for_layout; ?--> 会社名:〇〇株式会社 住所:〇〇市〇〇町 メールアドレス:info@example.com URL:http://www.example.com/
View/Emails/text/my_template.ctp
<!--?php echo $name; ?--> 様 <!--?php echo $msg; ?-->
送信指示
送信指示をコントローラーに記述します。
App::uses('CakeEmail', 'Network/Email');
class EmailsController extends AppController {
public function index()
{
$ary_vars = array (
'name' => '〇〇',
'msg' => 'ありがとうございました。'
);
// 受信者設定
$to_mail = '****@example.com';//自分のメールアドレスにしておきましょう。
$to_name = 'お名前';
$subject = '件名';
// 送信処理
$email = new CakeEmail('default');
$email
->template('my_template', 'my_layout')
->viewVars($ary_vars)
->emailFormat('text')
->to(array($to_mail => $to_name))
->subject($subject)
->send();
$this->redirect($this->referer(), null, true);
}
}
として、/Emails にアクセスします。しばらくして、自分宛にメールがやって来れば完了です。

コメント
[…] emailの設定をしておきます。以前行った部分のConfig 設定だけやっておけばOKかな。 […]