受信したメールをPHPで受け取る方法.メールで自動的にユーザ登録する場合など,メールで受けた内容をデータベースに登録する際に良く使う方法.
PHPのCLI版を使って,コマンドラインで動作するPHPのスクリプトを用意.メールは標準入力 stdin から読み込み, PEAR の Mail/mimeDecode.php をつかってパースする.
#!/usr/local/bin/php -q <?php require_once "Mail/mimeDecode.php"; require_once "Mail/RFC822.php"; $fp = fopen("php://stdin", "r"); while(!feof($fp)){ $input.=fread($fp, 4096); } fclose($fp); $params['decode_headers'] = false; $params['input'] = $input; $params['include_bodies'] = true; $params['decode_bodies'] = true; $params['decode_headers'] = true; $structure = Mail_mimeDecode::decode($params); /* print_r($structure->headers); print_r($structure->body); */ exit 0; ?>
あとは,~/.qmail-hoge から上記スクリプトを呼び出すだけ.
| /path/to/script.php
qmail から上記スクリプトを呼び出す部分についての詳細は dot-qmail のman を見るとよい.環境変数に色々なパラメータが渡されているらしい.