むぅぅぅ
携帯からhoge@hogehoge.comにメールを送ってパイプ経由でデータを受け取り解析するプログラムを作ってるんだけど、どうも上手くいかなくて悩んでる。
処理としては
- 送信元メアド抽出
- Subject抽出
- 添付ファイル名抽出
- 添付ファイル保存
とかなりシンプル。
実際ファイル名抽出までは普通に正規表現だけで取れるんで問題ないんだけど、最後の
- 添付ファイル保存
がうまくいかない。
au、vodafone、FOMAじゃない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で編集しとります。
こんな感じ