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