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