php PEAR Mail/mimeDecode.php

受信したメールをPHPで受け取る方法.メールで自動的にユーザ登録する場合など,メールで受けた内容をデータベースに登録する際に良く使う方法.

PHPCLI版を使って,コマンドラインで動作する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[&#39;decode_headers&#39;] = false;
$params[&#39;input&#39;]          = $input;

$params[&#39;include_bodies&#39;] = true;
$params[&#39;decode_bodies&#39;]  = true;
$params[&#39;decode_headers&#39;] = 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 を見るとよい.環境変数に色々なパラメータが渡されているらしい.