[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
****************************