[PHP-users 3653] メール添付画像ファイルのファイル名を取得したい

Jun 2kawa php-users@php.gr.jp
Sun, 18 Nov 2001 22:31:19 +0900


二川です。いつもお世話になっております。

メールサーバ(qmail)、POP3エージェント(qpopper)、
WWWサーバ(Apache1.3.20)が同一サーバ(RedHat7.1)上で動作している環境で、
PHP(4.0.6)のimap関数を使用して、localのメールサーバからメール内容を読み込み
メールに添付されている画像ファイルを読み込もうと試みております。
添付画像ファイルの内容は取得に成功しておりますが、、
どうにも添付ファイルの
ファイル名を取得できずに四苦八苦しております。

送付されてくるメールは基本的に multipart/mixed形式で送付され、
text/plain部と image/jpeg部で構成されている事されてます。

各メッセージ毎に以下の処理を行うことで添付画像を
取得しております。

for( $i=0; $i < $num; $i++ ){ /メッセージ数分ループ
    $elm=imap_fetchstructure( $mbox, $i+1 ); /メッセージ構造の取得
    $prmnum = count( $elm->parts ); 
    for( $j=0; $j < $prmnum; $j++ ){
        $bd = imap_fetchbody( $mbox, $i+1, $j+1 ); /メッセージ本文の取り出
し
        if( $elm->parts[$j]->encoding == 3 ){//Base64?
             $decodestr = imap_base64( $bd ); /Base64デコード
             $fp = fopen( "test.jpg","w" );
             $length = strlen( $decodestr );
             fwrite( $fp, $decodestr, $length ); /デコード内容をファイルに
保存
             fclose( $fp );
        }
        print $bd."<br>";
    }
}

上記処理で出力したtest.jpegを表示すると、添付画像が正しく表示されます。
このとき、添付画像ファイルパートのMIMEヘッダーを見てみると
Content-type: image/jpeg; name=XXX.jpg

と、コンテントタイプの後ろにファイル名が入ってるんですけど、
imap_fetchstructureの戻り値オブジェクトの各要素の中を確認してみても
ファイル名を発見できませんでした。
ファイル名を取得するには、別の関数を使用する必要があるのでしょうか?
どなたか、メール添付のファイル名取得に成功した方とかいらっしゃいませんか?

何か参考になる情報をお持ちの方、ご教授くだされば幸いです。


****************************
Jun Futakawa
futasan@lib.bekkoame.ne.jp
****************************