CakeEmail を gmail 経由でメールする。

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 にアクセスします。しばらくして、自分宛にメールがやって来れば完了です。

コメント

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

タイトルとURLをコピーしました