アジャイル,Trac,オープンソースなどの話。認定スクラムマスター。Twitterは@ryuzee
今cakephpで作っているシステムにはメール送信処理があるんだけど、そこで初めてオープンソースのメール送信ライブラリであるQdmailを使ってみた。
Qdmailは以下のような特徴をもつライブラリで純国産オープンソースライブラリ(MITライセンス)。
Qdmailとは、PHPのマルチバイト環境(特に日本語)にて、「文字化けしない」「簡単に"デコメ(デコメール)"やHTMLメール等の電子メールを送信することができる」メールクラスライブラリです。文字化け完全制覇を目指しています。
CakePHPのコンポーネントとしても動作可能です。(1.1.3bより主要5フレームワーク対応。)
cakephpでの使い方もかなり簡単。コンポーネントをダウンロードして、componentsディレクトリに配置したあと、コントローラーの先頭でコンポーネントの利用を宣言する。
んで、関数内で適当にメールが送れる。cakeのviewやelementを送信する本文に利用できるので、コントローラー内にメール本文作成ロジックが散在したりすることもない。(下の例では使っていない)
これで、php.iniが正しく設定されていればメールが送信できる。
なお、POP before SMTPとかSMTP Authとかが使われているメールサーバだとそのままでは送信できないので、同じ場所で配布されているQdsmtpを使えば良い。
いつも思っていたのだけど、前職の時から、メール送る処理って、何故かみんな毎回ばらばらに作ってるんだよね。mb_sendmailやらmib_mime_headerやらがいつもソースコード中に散在していて、それでもたまに「文字化けが直らないよ~」みたいなくだらない報告が来たりする。折角良いライブラリがあるのに自前で茨の道に進んで、変なトラブルが起こり時間をロス。それって生産性悪いよな。
ビジネスロジックに集中するために、フレームワーク使って開発しているのに、車輪の再開発(しかも動かない)するなんて非論理的。
そういう点を踏まえてQdmailお勧め。
あと、ちょっと別の話だが、WindowsXP上で開発しているとlocalhost上にSMTPがなくて、メール送信処理のテストがしにくいんだよね。
php.iniのWindows専用の設定値で、接続先のSMTPサーバやポートを指定しても、相手側がPOP before SMTPだったり、SMTP Authだったりするとテストできん。
そういう場合は、Radishを使う。RadishはWindows上で動作するSMTP、POP、DNSの軽量デーモン。SMTPの場合、設定変更をすれば、メールはすぐには配送せず配送キューに溜めることができ、どんなメールが何通キューにたまっているのかもすぐ分かる(本文も分かる)。そういう意味でWindows上でメール送信プログラムを書いている人のテスト用途にお勧めだ。

これで、キューの行をダブルクリックすると、メールソフトでメール本文が表示される。便利。
コメントはありません。是非コメントしてください。