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)から
関連記事
-
-
Cookieログイン
今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwr
-
-
selectボックスを実装
今まで、selectボックスのgroupを作成するのにSet::Combineを使用していましたが、意外と簡単にできることに気付いてしまったので、ご紹介。(自分だけ知らなかったことに気付いた と言った
-
-
Syslogログエンジン
2.4から「Syslog」ログクラスが追加され、簡単にSyslogを使用できるようになりました。 CakePHP側の設定はbootstrap.php内のCakeLogコンフィグのengineを'Sy
-
-
Js/Cssファイルの読み込みや出力する方法
CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン
-
-
radioボタンを実装
Radioボタンの実装は、セレクトボックスとほぼ同じです。 個人的にはラジオボタンをすすんで使用することは少ないのですが、2択くらいの選択肢であれば非常に便利ですよね。 今回は、その実装方法 デモ
-
-
ログローテーション
CakePHP 2.xではbootstrap.php内にあらかじめアプリケーションログの設定が書かれています。2.xで日付ごとにログファイルが切り替わるよう設定してみました。 日ごとにログを切り替え
-
-
独自のバリデーションルールを作成
CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規
-
-
ネストしたリストを出力「nestedList」
DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(
-
-
Blowfishを使用してハッシュ化する
使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま
-
-
FullCalendarを使用してカレンダーアプリケーション
カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード
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さんから