CakeEmailでメール送信(@gmail)
CakePHP 2になって追加されたクラスCakeEmailがシンプルに使えます。これを使用してメール送信を行う処理を実装してみました。
CakeEmailクラスの読み込み
/app/Config/bootstrap.php(全体的に使用する場合)もしくは各々の(使用する)コントロールに定義します。
App::uses( 'CakeEmail', 'Network/Email');
CakeEmailの設定
database.phpと同様、/app/Config下に設定ファイルが用意されています(email.php.default)ので、email.phpにリネームして下さい。そこに使用するメールサーバの設定を行います。以下はGmailからの送信設定を追加しています。
// /app/Config/email.php
class EmailConfig {
public $default = array(
....
);
// Gmailを例
public $gmail = array(
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'username' => 'username@gmail.com', // ユーザ名
'password' => 'password', // パスワード
'transport' => 'Smtp',
'tls' => true
);
// さくらインターネットを例
public $sakura = array(
'host' => '______.sakura.ne.jp', // 初期ドメイン
'port' => 587,
'username' => 'username@______.sakura.ne.jp', // ユーザ名:
// 初期ドメインのメールアドレスもしくは、独自ドメインのメールアドレス
'password' => 'password', // メールパスワード
'transport' => 'Smtp',
);
}
送信処理(メール本文ベタ書き)
newでインスタンス化する際にそこで使用する設定を引数で渡します。('gmail')
$email = new CakeEmail( 'gmail'); // インスタンス化
$email->from( array( 'sender@domain.com' => 'Sender')); // 送信元
$email->to( 'reciever@domain.com'); // 送信先
$email->subject( 'メールタイトル'); // メールタイトル
$email->send( 'メール本文'); // メール送信
送信処理(メール本文をテンプレート化)
$email = new CakeEmail( 'gmail'); // インスタンス化
$email->from( array( 'sender@domain.com' => 'Sender')); // 送信元
$email->to( 'reciever@domain.com'); // 送信先
$email->subject( 'メールタイトル'); // メールタイトル
$email->emailFormat( 'text'); // フォーマット
$email->template( 'templete'); // テンプレートファイル
$email->viewVars( compact( 'var1', 'var2')); // テンプレートに渡す変数
$email->send(); // メール送信
- emailFormat
'html'もしくは'text'を選択します。
また、'both'と設定しtemplateをhtml・textと用意しておくとマルチパートメールを送信することも可能です。 - template
使用するテンプレートファイルを指定。emailFormatが
htmlの場合 => /app/View/Emails/html下
textの場合 => /app/View/Emails/text下
に、.ctpで配置 - viewVars
テンプレートに渡す変数を必要なだけcompactして、$var1などでアクセス
「This email was sent ~」
テンプレートを使用した際にメール本文末尾に付けられる"This email was sent using the CakePHP Framework, http://cakephp.org"を消すのは、/app/View/Layouts/Emails/text/default.ctp (もしくは、/app/View/Layouts/Emails/html/default.ctp)から
関連記事
-
-
checkボックスを実装
selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA
-
-
Formヘルパーのinputタグのdiv/labelなどの設定
Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま
-
-
DebugKitを導入
定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし
-
-
コントローラ内でバリデーション処理を呼び出す
CakePHPでは、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。
-
-
ハッシュ関数の選択とハッシュ化処理
CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ
-
-
CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」
「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し
-
-
バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」
CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。 beforeVali
-
-
Cookieログイン
今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwr
-
-
hasOne アソシエーション
hasOneアソシエーションはテーブル間で1つのレコードに対して他のテーブルに紐付くレコードが1つの場合にjoinする場合に使用します。 CakePHPのドキュメントにならってUserモデルとP
-
-
RSSフィードの取得
コンロトーラ public function getrssfeed() { try { $newsItems = $this->Rss->read( 'http://



Comment
[…] http://kwski.net/cakephp-2-x/1017/ […]
emailFormatはhtml,text,both: CakeEmailでメール送信(@gmail) https://t.co/2UKcI5cUNt
[…] CakePHP 2.x – CakeEmailでメール送信(@gmail) […]
“CakePHP 2.x: CakeEmailでメール送信(@gmail) | Think deeply, Do less, More effective” http://t.co/ys8sjMYbgh #cakephp #smtp
CakePHP 2.x: CakeEmailでメール送信(@gmail) | Think deeply, Do less, More effective - http://kwski.net/cakephp...
CakeEmailでメール送信(@gmail) http://kwski.net/cakephp-2-x/1017/ … @kwski3さんから