むぅぅぅ

携帯からhoge@hogehoge.comにメールを送ってパイプ経由でデータを受け取り解析するプログラムを作ってるんだけど、どうも上手くいかなくて悩んでる。

処理としては

  • 送信元メアド抽出
  • Subject抽出
  • 添付ファイル名抽出
  • 添付ファイル保存

とかなりシンプル。
実際ファイル名抽出までは普通に正規表現だけで取れるんで問題ないんだけど、最後の

  • 添付ファイル保存

がうまくいかない。

auvodafoneFOMAじゃないDoCoMo端末からのメールは↓のようなフォーマット

From XXXXXXXXXXXXX@ezweb.ne.jp Wed Aug 24 22:06:55 2005
Received: from nm14omta029.ezweb.ne.jp (nmoPF22.ezweb.ne.jp [219.125.149.152])
        by hogehoge.com (XXX.XXX.XXX.XXX) with SMTP id j7OD6qeu027420
        for <XXX@hoge.com>; Wed, 24 Aug 2005 22:06:53 +0900
From: XXXXXXXXXXXXX@ezweb.ne.jp
To: XXX@hoge.com
Subject: 5555
Message-ID: <200508241306476070080067CR8C@nm14imap028.ezweb.ne.jp>
Date: Wed, 24 Aug 2005 22:06:47 +0900
Mime-Version: 1.0
Content-Type: multipart/mixed;boundary="----=_NextPart_00014"

------=_NextPart_00014
Content-Type: text/plain;charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit




------=_NextPart_00014
Content-Type: image/jpeg;
 name="050824_1710~01.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="050824_1710~01.jpg"

/9j/4QJURXhpZgAATU0AKgAAAAgACwEOAAIAAAAPAAAAkgEPAAIAAAAIAAAAogEQAAIAAAAFAAAA
qgESAAMAAAABAAEAAAEaAAUAAAABAAAAsAEbAAUAAAABAAAAuAEoAAMAAAABAAIAAAEyAAIAAAAU
AAAAwAITAAMAAAABAAIAAIdpAAQAAAABAAAA1MSlAAcAAAAuAAACHgAAAAAwNTA4MjRfMTcxMH4w
MQAAS0RESS1TTgBXMzFTAAAAAABIAAAAAQAAAEgAAAABMjAwNTowODoyNCAxNzoxMDoyMAAAFYKa
AAUAAAABAAAB1oKdAAUAAAABAAAB3ognAAMAAAABAFAAAJAAAAcAAAAEMDIyMJADAAIAAAAUAAAB
5pAEAAIAAAAUAAAB+pEBAAcAAAAEAQIDAJIEAAoAAAABAAACDpIHAAMAAAABAAIAAJIIAAMAAAAB
AAAAAJIJAAMAAAABABAAAKAAAAcAAAAEMDEwMKABAAMAAAABAAEAAKACAAQAAAABAAAA8KADAAQA
AAABAAABQKQBAAMAAAABAAAAAKQCAAMAAAABAAAAAKQDAAMAAAABAAAAAKQEAAUAAAABAAACFqQG
AAMAAAABAAAAAKQMAAMAAAABAAAAAAAAAAAAAABkAAAM5AAAABwAAAAKMjAwNTowODoyNCAxNzox
MDoyMAAyMDA1OjA4OjI0IDE3OjEwOjIwAAAAAAAAAAAKAAAAAAAAAApQcmludElNADAzMDAAAAAF

↓がFOMAのフォーマット

From XXXXXXXX@docomo.ne.jp Wed Aug 24 22:11:18 2005
Received: from docomo.ne.jp (mail121.docomo.ne.jp [203.138.203.195])
        by hogehoge.com (8.13.3/8.12.9) with SMTP id j7ODBGLN027437
        for <XXXX@hoge.com>; Wed, 24 Aug 2005 22:11:17 +0900
Date: Wed, 24 Aug 2005 22:11:14 +0900 (JST)
From: XXXXXXXX@docomo.ne.jp
To: XXXX@hoge.com
Subject: 11111
Message-ID: <IMTd14810a37dc871N1U@docomo.ne.jp>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="mimemk00"
Content-Transfer-Encoding: 7bit

--mimemk00
Content-Type: image/jpeg;
 name="200508042311000.jpg"
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAgAAAQABAAD//gAMAAAAAAAAAAAAAP/AABEIASABYAMBIQACEQEDEQH/2wCE
AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkO
Dw0MDgsMDAwBAgICAwMDBgMDBgwIBwgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDP/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEB

両方共
上部
空行
中部
空行
下部(本文)
に分かれてるんで

function body_split($data) {
        $part = split("\r\n\r\n", $data, 3);
        $part[1] = ereg_replace("\r\n[\t ]+", " ", $part[1]);
        return $part;
}

みたいな感じで3つのデータに分けて本文を取得しようとしてるんだけど、何故か改行コードを判別出来てないようでさっぱり3つに分かれてくれない。

        $part = split("\r\n\r\n", $data, 3);

を、

        $part = split("^$", $data, 3);

に変えても全く駄目。

何故改行コードで分割してくれないんでしょ。
不慣れなSELinux使ってるからってわけじゃないだろうし…

ちなみに言語はPHPです。

改行コードで分割してくれないもんだから別の手段も使えずでまじで躓いてます。
Help Me!!!

一応環境を

Apache2.0
PHP4.3.11
OS:Linux
ターミナルで鯖にログインしてviで編集しとります。

こんな感じ