QdmailはPHPで日本語のメールを簡単に送信できるライブラリです。「ダウンロードdownload – Qdmail – PHP::Mail Library , Quick and Detailed for Multibyte」から 1.2.6bをダウンロードして使います。MIT Licenseで、2008年あたりに開発が停止している点が気になりますが、PHP4, PHP5に対応しているので重宝します。
次のようなディレクトリ構成でファイルを用意します。sendmailなどでメール送信ができる環境が必要です。なければ、QdSmtpを使う必要があります。
$HOME/workspace/php/qdmail/ ├── qdmail.1.2.6b │ ├── qdmail.php │ ├── qdmail_COPYRIGHT.utf-8.txt │ ├── qdmail_COPYRIGHTeucjp..txt │ └── qdmail_COPYRIGHTsjis..txt └── sample.php
PHP5.4では、メール送信時にE_STRICTエラーが出るようになるらしいので、下記のように置換処理をしておくと良いようです。
$ sed -i 's/function & smtpObject(){/function \& smtpObject( $null = false ){/' qdmail.1.2.6b/qdmail.php
サンプルプログラム sample.php の内容は次のようになります。
require_once('./qdmail.1.2.6b/qdmail.php'); $mail = new Qdmail(); $mail -> easyText( array( 'user001@example.jp' , '宛先' ), 'タイトル' , '本文', array('user002@example.jp' , '配信元') );
実行するには次のようになります。
$ cd $HOME/workspace/php/qdmail/ $ php -f sample.php
postfixを使っていると、sendmail完全互換ではないため以下のようなエラーが発生します。メール送信はされるようですが、エラーは消したいところです。
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.phpの1186行目のif文を次のようにして、実行されないようにすれば、解決します。
if(false) {// !== @system($sendmail_path.' -d0.1 < /dev/null > /dev/null',$ret)){