[PHP-users 12029] Mailboxに格納されたメールの、ヘッダと本文を分ける

S.Okazaki php-users@php.gr.jp
Thu, 05 Dec 2002 16:09:11 +0900


こんにちは、岡崎です。
分かりにくいサブジェクトで申し訳ありません。

Mailbox形式で、メールが格納されています。
そのファイルを開き、まずメールを個々に分け
今度はその分けられたメールに対して、ヘッダー部分と、本文の
間に、線(print "<hr>\n";)を入れて表示したいと思っています。

Mailboxを開いて、ずっと眺めていたところ、私の環境では
メール開始は必ず
>From someone@somecompany.com Web Dec …
行から始まっていました。

Q1.
これは相手(送信者のMUAやMTA)に依存せずに、必ずこうなるの
でしょうか?

続いて、ここのメールをヘッダーと本文に分割したいと思い
調べてみたところ、
「分かれ目には改行を使う」と言うのを見つけ
下記のようなコードを書いてみました。

$mail_dev=array(0,233,453,882…)
一番最初のメールは0行目から232行目まで、
次のメールは233行目から452行目まで…
と言う意味の配列です。

for($i=0;$i<sizeof($mail_dev);++$i) {
    $j=$i+1;
    $from=$mail_dev[$i];
    $to=$mail_dev[$j];
    //$toが空であれば→最後のメール時は
    if($to<=0) { $to=sizeof($file); }
    //一メール毎にテーブルで囲む
    print "<table border=\"1\"><tr><td>\n";
    for($k=$from;$k<$to;++$k) {
        //ここが質問の箇所です。ヘッダと本文の区切りをつけたい
        //その他、\r , \n も試してみました。
        if($file[$i]=="\r\n") { print "<hr>\n"; }
        if (eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$file[$k],$regs)) {
            $file[$k]=$regs[1].base64_decode($regs[2]).$regs[3];
        }
        print $file[$k]."<br>\n";
    }
    print "</td></tr></table><p>\n";
}

このコードでは駄目でした(^^;
Q2
ヘッダと本文の区切りはどうやって見つければいいのでしょうか?

環境
PHP4.2.3

以上よろしくお願いいたします。

/_/_/_/_/_/_/_/_/_/_/_/_/_/
Japan Human Base 
Sotaro Okazaki
Email : okazaki@jp-hb.com
/_/_/_/_/_/_/_/_/_/_/_/_/_/