CakePHPにはメールを送信するコンポーネントがありません。そこでZendFramework(以下、ZF)のZend_Mailを組み合わせてみました。
1.ZendFremeworkを設置
ZFをダウンロード・解凍し、library/以下を[app/vendors]に設置します。設置すると以下のような構成になります。
[app] + [vendors] + [Zend] + Zend.php
2.ZendFremework読み込み準備
ZFではクラスファイルを読み込む際にinclude_pathが通っている事を前提としています。このまま使用するとクラスファイルが読み込めずにエラーが発生するので、include_pathを設定するスクリプトを設置しておきます。
[app/vendors/zend_init.php]
<?php ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . dirname(__FILE__)); ?>
3.controllerで使用する
まず2.で設置したスクリプトをvendor(zend_init)で読み込みます。あとは使用する各ファイルをvendor()で読めばOKです。
[app/controller/mail_controller.php]
<?php vendor('zend_init'); // ZFを読む前に実行 vendor('Zend/Mail/Transport/Smtp'); vendor('Zend/Mail'); class MailController extends Controller { var $name = 'Mail'; function send() { $encodeTo = 'ISO-2022-JP'; $encodeFrom = 'UTF-8'; mb_language('ja'); $subject = 'テストメール'; $subject = mb_convert_encoding($subject, $encodeTo, $encodeFrom); $subject = mb_encode_mimeheader($subject); $body = 'こんにちは。テストメールです。'; $body = mb_convert_encoding($body, $encodeTo, $encodeFrom); $mail = new Zend_Mail($encodeTo); $mail->addHeader('Mime-Version', '1.0'); $mail->setFrom('hoge@example.com', 'Admin'); $mail->addTo('foo@example.com'); $mail->setSubject($subject); $mail->setBodyText($body); // SMTP $mail->send(new Zend_Mail_Transport_Smtp('mail.example.com')); } } ?>
>>
すべてがフレームワークでまかなえればそれに越したことはないのですが、足りない部分は他のライブラリなりを使って解決していけば良いと思います。CakePHPはそれを見越したような作りになっているのでわりときれいに取り込めますね。
# ちなみにZFを使うにはPHP5が必要です。ただPHP4でもPEARを使えば同じような事ができます。
- Newer: CakePHP 管理者用アクション
- Older: 「GTD ひたすらリストを書き出す会 in 関西」
トラックバック:4
- このエントリーのトラックバックURL
- /blog/2006/08/cakephp_zf.html/trackback
- Listed below are links to weblogs that reference
- CakePHPでZendFrameworkを使う from Shin x blog
- pingback from 有限会社アンドワークス - アンドワークスBLOG 北青山通信 : CakePHPでPEARを使う by ando 07-08-08 (水) 15:32
-
[…] 今回参考にしたのは、「CakePHPでZendFrameworkを使う」(このページへのトラックバックの付け方がわからないのでリンクでごめんなさい)というサイト。つまり、ZendFrameworkもPEARもライブラリだからいいのだという単純な考え。 […]
- pingback from CakePHP1.2でZendFrameworkを使う | blog.hereticsintheworld 08-09-23 (火) 11:55
-
[…] CakePHP1.2.x.xになってからvendor()が使えなくなりました。 PEARとかZendFrameworkを使うときにはクラスファイルを読み込む際にinclude_pathを通さなければならないので、その辺も踏まえつつ。 […]
- pingback from 北青山通信 - from aoyama - CakePHPでPEARを使う 08-12-06 (土) 19:37
-
[…] 今回参考にしたのは、「CakePHPでZendFrameworkを使う」(このページへのトラックバックの付け方がわからないのでリンクでごめんなさい)というサイト。つまり、ZendFrameworkもPEARもライブラリだからいいのだという単純な考え。 […]
- pingback from polidog lab+ | cakePHP1.3でZendFremeworkを使う 10-07-25 (日) 1:48
-
[…] cakePHPつかっていて、やっぱZendのLibrary周りとかは使いたいなーとか思いました。 そこで「CakePHPでZendFrameworkを使う」を参考に設定していみました。 […]