OME for PHP
OMEの他のコンポーネントとは全く関連がありませんが、PHPで使えるメール送信用のクラスを作ったときに、同じ名前にしてしまおうと考え、「OME.php」という名前にしました。もともとは、「メール送信システムの作り方大全」(ソフトバンク刊)の書籍で、PHPでのメール送信のやりかたをあれこれ解説したときに作ったプログラムを、自分で作っているアプリケーションなどで利用できるようにきちんとクラスにしたものです。現在配布されているものは、2003〜4年頃に作り始めたもので、PHP4の時代に作ったものです。PHP5でも利用可能です。
入手方法と動産環境
ソースコードはSubversionで公開しており、ViewCVできれいに見せています。そこからのダウンロードは、ここをクリックして行ってください。ダウンロードされず、ウインドウに表示された場合はそのまま「OME.php」というファイルで保存をすれば概ね大丈夫です。このファイルは日本語でコメント付けされており、文字コードはEUC-JPです。
動作環境は、PHPのオリジナルのmail関数が使えることと、mbstringライブラリが使えるようになっていることです。これらが正しく使える場合にはOME.phpは利用できます。UNIX系OSの場合は、多くの場合に稼働すると思いますが、sendmailコマンドが正しく稼働するかどうかをチェックしましょう。Windows系OSの場合は、php.iniのSMTP=...の設定が正しくなされている事と、mbstringのライブラリのDLLが利用できるようになっているかを調べてください。
使用方法
OME.phpを作った理由は明白で、「何も考えなくても日本語環境に即したエンコードをしたメールを送る」ということです。逆に言えば、他の言語のメールについては全くサポートされていないと考えてください。英語のメールは問題ないとは思われますが、中国語や韓国語には対応していません。
mbstringに関する設定
PHPのプログラムの最初などに、以下のような記述を入れてください。プログラムはmb_send_mail関数を使うので、mbstringの機能を使うことになります。エンコードは、UTF-8ないしはEUC-JPを使います。
mb_language( 'ja' );
mb_internal_encoding('UTF-8');
通常のメール送信
以下が典型的な1つの例です。送信者、受信者、タイトルを設定し、本文に設定します。本文は何もしなくても72バイトごとに改行されます。最後に、sendメソッドを使って送信します。
$oneMail = new OME;
$oneMail->setFromField($frAddress, '送信者');
$oneMail->setToField($toAddress, '受信者');
$oneMail->setSubject("テストメールTestMailテストメール");
$body = "これはメールです。72バイトごとに改行しています。";
$body .= "This is English sentense, and word-wraping available.";
$oneMail->setBody("$body$body$body$body$body\n");
$oneMail->appendBody("$body$body$body$body$body\n");
$oneMail->appendBody("$body$body$body$body$body\n");
$oneMail->appendBody("$body$body$body$body$body\n");
if ( ! $oneMail->send() )
echo $oneMail->getErrorMessage();
差し込み機能を使たメール送信
メールの本文として、まずsetTemplateAsStringメソッドで、文字列で直接テンプレートの文字列を指定しています。これに対して、insertToTemplateメソッドを使う事で、引数の配列の要素を置き換えて、それを本文にします。つまり、@@1@@は「たぬき」、@@2@@は「きつね」、@@3@@は「ネコ」に置き換わり、結果的に本文は「最初はこれ:たぬき\n次はこれ:きつね\nさらにこれ:ネコ\n\nこの後は空白:\n\n」となります。この場合、@@4@@と@@5@@に対応する要素は与えられなかったので、これら置き換える文字列は自動的に消去されます。置き換え文字がなかったかどうかはsetTemplateAsStringメソッドの返り値がFALSEになることで分かります。そして送信しますが、送信時はテンプレートの文字列を置き換えた結果に対して、72バイトごとの改行は行います。
$oneMail = new OME;
$oneMail->setFromField($testAddress, 'Tester');
$oneMail->setToField($testAddress, 'Tester');
$oneMail->setSubject("テストメールTestMailテストメール");
$oneMail->setTemplateAsString("最初はこれ:@@1@@\n次はこれ:@@2@@\nさらにこれ:@@3@@\n\nこの後は空白:@@4@@@@5@@\n\n");
$oneMail->insertToTemplate(array("たぬき","きつね","ネコ"));
if ( ! $oneMail->send() )
echo $oneMail->getErrorMessage();