【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【CakePHP】CakeEmailクラスなら簡単!htmlメール送信やらCronジョブ送信。

先日、とある案件でCakePHP2系のメール機能を使いました。

数年前にもCakePHPでサイト作成したことがあったのですが、バージョンは1系。
標準のメール送信機能では日本語が文字化けし、
結局、外部ライブラリを使用してメール送信をしました。

でも今回(CakePHP2系)は違います。

CakePHP標準のCakeEmailクラスでさくっとメール送信することができました。

文字化けもなし。
(ただし、今回作成したのは業務システムでしたので、
限られた環境の限られた人に対してOKだっただけですので、念のため。)

「メール送信したいだけ」といった軽い使い方の場合、外部ライブラリを使わず、
標準機能だけでメール送信できると便利ですね。

使い方も簡単!
STEP0
事前に、config/email.php にメール送信設定

STEP1
App::uses('CakeEmail', 'Network/Email');
で、CakeEmailクラスを事前によみこんでおいて、

STEP2
送信する際、
$email = new CakeEmail('default');
な感じで、CakeEmailクラスをインスタンス化して、

STEP3
$email->send();
で送信完了。わずか3ステップ!

・・・

簡単さを伝えたかったのですが、ちょっとはしょりすぎました。
サンプルコードは以下のサイトでどうぞ。(汗)

CakePHP2でメール送信を手軽に行うための実装CakeEmailを使ってみたら本当に簡単すぎて便利、メールフォームがなくてもメール送信機能だけで | Ultraひみちゅぶろぐ
CakePHP2.X 「CakeEmail」 の使い方 | 高橋 です
cakephp2.x メール送信 | まとめーたー

htmlメールも簡単!


今回、htmlメールで送信する仕様だったのですが、楽々でした。
画面出力を作るような感じで、メール送信できました。

$email = new CakeEmail('default');
$email->emailformat('html');
$email->template($template);
$email->to($mail_to);
$email->subject($subject);
$email->viewVars(array('sendData' => $data));
$email->helpers(array('Utill'));

$sent = $email->send();
if ($sent){
//正常終了
$result = true;
} else {
//異常終了
$result = false;
}

画面出力の場合、レイアウトとビューを使いますが、
メール送信の場合は、メール専用のレイアウトとテンプレートを使います。
(text用とhtml用があります)

htmlメールの場合は以下のレイアウトファイル・テンプレートファイルを使用。
・app/View/Layouts/Emails/html/レイアウト.ctp
・app/View//Emails/html/テンプレート.ctp

画面出力の場合、モデルから取得してきたデータを$hits->setでビューに渡しますが、
メール送信の場合、viewVars でテンプレートへ渡します。
また、テンプレート内ではヘルパーが使用できます。

標準で読み込まれないヘルパーは helpers で指定してください。

注意点としては、1行の行数が長すぎる場合、CakePHPの自動改行にまかせると
文字化けしてしまいます。(ここで少しはまりました
マルチバイトが考慮されていないのかもしれません。
なので、ここはテンプレート側で手動で改行します。

<イメージ タグは全角。コピペしても動きません>
echo '<p>メールです</p>' . "¥n";>
echo '<p>ちゃんと見てね</p>' . "¥n";

改行コード(¥n)は、ダブルコーテーションでくくる必要があります。

シングルコーテーションだとそのまま表示されてしまうのでご注意(ここでも少しはまりました

モデルから取得したデータを、テンプレートへ引き渡してテンプレートで
表示まわりを整形し、メール送信。

画面まわりを作るのと同じ要領でメール送信できました。


Cronジョブ連携も簡単!


あと、CakeEmailはクラスで実装されていますので、shellからの呼び出しも簡単です。
(CakePHP1系はコンポーネントで実装されていました)

使い方は全く同じ。
shellファイルの先頭で
App::uses('CakeEmail', 'Network/Email');
してあげれば、いいだけです。

いやー簡単でした。
(文字化けでちょっと焦ったのは、ここだけの話しでお願いします。。。)

CakePHPの実践的なTipsが100例以上収録されています(メール送信サンプルもあり)
>>Webアプリ開発を加速する CakePHP2定番レシピ119

[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【Windows10】OS名が10の理由はマーケティング上の理由である!MSはそんなに優しくないよ。
【雑記】ポモドーロ用タイマーには、バイフレーションつきストップウォッチがおすすめ。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)