diff --git a/include/class.mailparse.php b/include/class.mailparse.php index 8d162e52a6d9182b6cca5284ff061538b4124ff9..c61573d463e78e3a2f7137d7bb9991ec14cd7b76 100644 --- a/include/class.mailparse.php +++ b/include/class.mailparse.php @@ -164,6 +164,11 @@ class Mail_Parse { return $data; } + + function mime_encode($text, $charset=null, $encoding='utf-8') { + return Format::encode($text, $charset, $encoding); + } + function getAttachments($part=null){ if($part==null) @@ -173,10 +178,20 @@ class Mail_Parse { && (!strcasecmp($part->disposition,'attachment') || !strcasecmp($part->disposition,'inline') || !strcasecmp($part->ctype_primary,'image'))){ + if(!($filename=$part->d_parameters['filename']) && $part->d_parameters['filename*']) $filename=$part->d_parameters['filename*']; //Do we need to decode? + + $file=array( + 'name' => $filename, + 'type' => strtolower($part->ctype_primary.'/'.$part->ctype_secondary), + 'data' => $this->mime_encode($part->body, $part->ctype_parameters['charset']) + ); + + if(!$this->decode_bodies && $part->headers['content-transfer-encoding']) + $file['encoding'] = $part->headers['content-transfer-encoding']; - return array(array('filename'=>$filename,'body'=>$part->body)); + return array($file); } $files=array();