[PHP] Qdmailを使ってみた
2009年12月1日
同僚が「Qdmailというのがいいよ」と教えてくれたのでテストしてみました。
Qdmail概要
例えば、こんな風に使います。
require_once '/path/to/qdmail.php';
$mail =& new Qdmail();
$mail->to('to@example.com', '差出人名');
$mail->subject('件名です');
$mail->text('内容です');
$mail->from('from@exmaple.com', '宛先名');
$mail->send();
これで、件名が長くても、JISメールでも、ちゃんと送ることができます。
それ以外にも、主要なPHPフレームワーク上で使う際の配慮や、
ログ対応、デコメ対応などがなされており、
本家マニュアルサイト↓もしっかりと書き込まれています。
Qdmail本家サイト:
http://hal456.net/qdmail/
不便な点
1. 入力文字コードの明示指定が出来ない
正確には、出来ない訳ではなく、Qdmail#qd_detect_order で、
PHPのmb_detect_orderのルールに則る形で緩やかな指定は可能です。
ただ、mb_detect_order が false を返すような状況でも、
文字コード変換無しでそのまま処理を継続するので、ちょっと気持ち悪さが残りました。
まー、ほとんどの状況で大丈夫なはずなので、実際は影響は無いと思います。
2. 基本的に例外を返さない
PHP4対応のため仕方ありませんが、上記のように
「文字コード判別に失敗したら、普通は例外を投げて処理を止めるだろう」
・・・という造りにはなっていません。
exit(“status”); のような擬似的な例外システムも無く、概ね処理を継続します。
3. 環境によっては、標準エラー出力が常に出る
バッチモードで叩くと良くわかりますが、環境によっては以下のようになります。
$php qdmail_test.php sendmail: invalid option -- d sendmail: invalid option -- 0 sendmail: invalid option -- . sendmail: invalid option -- 1 sendmail: invalid option -- d sendmail: fatal: usage: sendmail [options]
これは、Qdmail#isQmail 内で、OSコマンドを直接叩いているためです。
対処は、phpオプションでどうにかなるのかは不明ですが、
ダメなら、「Linux 標準エラー出力 抑止」 とかでググって解決したりとか、
isQmailを通さないように変更とか、諦めて気にしないとか、でしょうか。