PEARがPEARがって検索したら結構出てきたんですが、
PEARは使わないので自分で書いてみることに。
以前 OpenPNEをセットアップした時にやったので、さくっと .mailfilter を設定して
(ここら辺参照 http://sumidagawa.sblo.jp/article/11226948.html )
メールデータを mail.php に飛ばす。
そうするとmail.phpに直で
Return-Path: <aaa@a.com>
Received: from ***.sakura.ne.jp (***.sakura.ne.jp [210.224.165.45])
by ***.sakura.ne.jp (8.14.3/8.14.3) with ESMTP id n6H7MnFd094136
for <php@phpdata>; Fri, 17 Jul 2009 16:22:49 +0900 (JST)
(envelope-from aaa@a.com)
Received: from a.com (a.com [***.***.***.***])
by ***.sakura.ne.jp (8.14.3/8.14.3) with ESMTP id n6H7Ml98094112
for <php@phpdata>; Fri, 17 Jul 2009 16:22:47 +0900 (JST)
(envelope-from aaa@a.com)
Received: by yxe11 with SMTP id 11so1156534yxe.3
for <php@phpdata>; Fri, 17 Jul 2009 00:22:46 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.150.146.14 with SMTP id t14mr1339668ybd.142.1247815366595;
Fri, 17 Jul 2009 00:22:46 -0700 (PDT)
Date: Fri, 17 Jul 2009 16:22:46 +0900
Message-ID: <710e6c850907170022u465e2601oe8fcdb18fad6bafa@a.com>
Subject: =?ISO-2022-JP?B?GyRCJCIkJCQmJCgkKhsoQiBhaXVlbw==?=
From: j <aaa@a.com>
To: php@phpdata
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
X-Anti-Virus: K-Prox Anti-Virus Powered by Kaspersky, bases: 17072009 #2246191, status: clean
ここに本文が入りますよー
ここに本文が入りますよー
ここに本文が入りますよー
こんな感じのデータが飛んでくるのでそれをばらして保存するだけ。
ってことで、こんな感じで書いてみた。
<?php
//mail.php
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_detect_order("ASCII,JIS,EUC-JP,SJIS,UTF-8");
$mailData = array();
$inputedMail = new NoRewindIterator(new SplFileObject("php://stdin"));
foreach ($inputedMail as $eachLine) {
$matchCount = preg_match("/^(.*?): (.*?)$/",$eachLine,$line);
switch ($line[1]) {
case 'Date':
$mailData['date'] = $line[2];
break;
case 'To':
$mailData['to'] = $line[2];
break;
case 'From':
$mailData['from'] = $line[2];
break;
case 'Content-Type':
$mailData['content-type'] = $line[2];
break;
case 'Subject':
$sub = explode('?',$line[2]);
switch ($sub[2]) {
case 'B':
$mailData['subject'] = mb_convert_encoding(base64_decode($sub[3]),'UTF-8','ASCII,JIS,EUC-JP,SJIS,UTF-8');
break;
case 'Q':
$mailData['subject'] = mb_convert_encoding(quoted_printable_decode($sub[3]),'UTF-8','ASCII,JIS,EUC-JP,SJIS,UTF-8');
break;
default :
break;
}
break;
default :
if ($matchCount==0 && isset($mailData['content-type'])) {
$mailData['body'] .= mb_convert_encoding($eachLine,'UTF-8','ASCII,JIS,EUC-JP,SJIS,UTF-8');
}
break;
}
}
//print_r($mailData);
Array
(
[date] => Fri, 17 Jul 2009 16:22:46 +0900
[subject] => あいうえお aiueo
[from] => ***
[to] => ***@***.***
[content-type] => text/plain; charset=ISO-2022-JP
[body] => ここに本文が入りますよーここに本文が入りますよーここに本文が入りますよー
)
?>
添付ファイルの処理とか text/html の処理とかは別途書かないといけないけど、
基本的にこんな感じで動くので、
割と楽にメールベースの運用アカウント管理ツールとかが作れるという。
まあめんどくさいので、ペンディングですがw