以前gistで公開したQdmailerコンポーネントですが、その後もいろいろ手を加えたい部分が出てきたので、正式にgithubにリポジトリを作成しました。
http://github.com/tkyk/cakephp-qdmailer
使い方はREADMEを読んでください。
本家QdmailComponentとの違いは次の通りです。[*]印はgist版からの変更点になります。
- View クラスの読み込み方法が EmailComponent と同一になっている(そのためThemeView やプラグインが提供するViewも使用可能)
- テンプレートファイルのエンコーディングが指定されなかった場合、自動判定するのでは無く App.encoding の値を使う
- CakePHPのConfigure::read(‘debug’)が0のとき、デフォルトでエラーメッセージを表示しない
- [*]Configure::writeによるグローバルな設定が可能
- [*]実行時にis_qmailの設定が可能
- [*]ログの保存先がデフォルトでLOGSになる(オリジナル版ではCOMPONENTS)
- [*]Qdsmtp使用時に、qdmail.phpをvendorsディレクトリに置くことができる
- [*]Qdsmtp使用時に、ログの保存先設定が引き継がれる
- [*]Qdsmtp使用時に、エラーメッセージ表示可否の設定が引き継がれる
is_qmailの設定は非常に重要なので補足しておきます。Qdmailはデフォルトでは「qmailを使っているか否か」をコンストラクタの中で自動判定しようとします。このときシェル経由(system関数)でsendmailコマンドを(qmailでしか使えないオプションを指定して)実行するため、相応の負荷がかかる上に、qmail以外のMTAを使用している場合はmaillogにエラーメッセージが記録されてしまいます。今のところ(qdmail-1.2.6b)この自動判定を実行時に止める方法はありません。そしてCakePHPのコンポーネントとして使う場合はさらに悲惨で、判定がコンストラクタで行われる以上、たとえメールを送らなくても、コンポーネントを読み込むだけで自動判定が実行されてしまいます。
ということで、is_qmailの設定は絶対に明示的に行ってください。具体的にはbootstrap.phpの中でConfigure::writeを使って行います。
Configure::write('Qdmailer', array('is_qmail' => false, /* ... その他の設定 ... */));
なおこのis_qmailの件も含めて作者spokさんには連絡してあるので、いずれ本体側で何らかの変更が行われるかも知れません。
[...] 2009-11-15 更新: さらに改良したものをリポジトリで公開しました。続・QdmailをCakePHPで使うを参照してください。 [...]