Qdmailでメール送信

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)){
同じタグの記事: PHP
同じカテゴリの記事: Program
関連書籍: PHP