[PHP-users 7983] メールの添付ファイルが開けない

兼築 史季 php-users@php.gr.jp
Sat, 08 Jun 2002 18:49:49 +0900


はじめまして。
初めて投稿します。宜しくお願いします。m(__)m

PHPで添付ファイル付きメールの送信をしたいのですが、
うまくいきません。

とりあえず、テキストファイルは上手くいきます。

バイナリ?として、PDFファイルで試してみたのですが、
受信した添付ファイルの中身と、送信元のファイルの中身が
微妙に違っていました。
送信元のPDFファイルにデータとして「\」があるのですが、
受信したファイルでは「\\」になっていました。

また、送信元にあるヌル(0x00)が受信したファイルでは
「\0」となっていました。

「[PHP-users 6756] pdfファイルをメール添付する方法 」を
参考にさせて頂いて、コーディングしました。
ソースコードは、以下です。

//ファイルの読込
$fp       = fopen( $FileName , "r" ) ;
$buf      = fread( $fp , filesize( $FileName ) ) ;
fclose( $fp ) ;

//メールヘの出力処理
$boundary = "-*-*-*-*-*-*-*-*-Boundary_". uniqid( "b" ) ;
$attach   = base64_encode( $buf ) ;

//▼ヘッダ生成
$MAIL_head = "" ;
$MAIL_head .= "Mime-Version: 1.0\n" ;
$MAIL_head .= "Content-Type: multipart/mixed;boundary=\"".$boundary."\"\n" ;
$MAIL_head .= "Content-Transfer-Encoding: Base64\n" ;
$MAIL_head .= "From: ".$userFROM."\n" ;

//▼メール内容
$MAIL_body = "" ;
$MAIL_body .= "--".$boundary."\n" ;
$MAIL_body .= "Content-Type: text/plain;charset=\"ISO-2022-JP\"\n" ;
$MAIL_body .= "\n" ;
$MAIL_body .= "本文" ;
$MAIL_body .= "\n" ;

$MAIL_body .= "--".$boundary."\n" ;
$MAIL_body .= "Content-Type: application/octet-stream;name=\"テスト.pdf\"\n" ;
$MAIL_body .= "Content-Transfer-Encoding: Base64\n" ;
$MAIL_body .= "Content-Disposition: attachment;filename=\"テスト.pdf\"\n" ;
$MAIL_body .= "\n" ;
$MAIL_body .= $attach."\n" ;
$MAIL_body .= "\n" ;
$MAIL_body .= "--".$boundary."--\n" ;

//▼メール送信
$set2 = mb_send_mail( $MAIL_userMail , "PDF出力テスト" , $MAIL_body , $MAIL_head ) ;


ちなみに、ファイルの読込をやめて、メモリ上でPDFを作成し、
$buf = pdf_get_buffer( $pdf ) ;
とすると上手くいきました。

しかし、サーバーにアップしたファイルを添付させたいので、
なんとか「\」の問題を回避しなければならないと思うのですが。。

分かる方がいらっしゃれば、ぜひお教え下さい。
宜しくお願いします。m(__)m


*************************************************
  兼築 史季
  E-mail:kanechiku@binal.com
*************************************************