Home > CakePHP | PHP > CakePHPでZendFrameworkを使う

CakePHPでZendFrameworkを使う

この記事の所要時間: 128

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を使えば同じような事ができます。

Pocket

follow us in feedly

トラックバック: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を使う」を参考に設定していみました。 […]

Home > CakePHP | PHP > CakePHPでZendFrameworkを使う

検索
フィード
メタ情報

Return to page top