diff options
author | alecpl <alec@alec.pl> | 2010-06-15 06:53:28 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-06-15 06:53:28 +0000 |
commit | f19d86b96da4a73efa88042dd0bcf0da1a214762 (patch) | |
tree | 393752ab7e3510712b32380b17ca2d8a994b47be /program/include/rcube_message.php | |
parent | 1aaeaaaaa65e8191923dec8448cbc42fefa52be0 (diff) |
- Fix attachment filenames broken with TNEF decoder using long filenames (#1486795)
- Use tnef_decoder class from Horde
Diffstat (limited to 'program/include/rcube_message.php')
-rw-r--r-- | program/include/rcube_message.php | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php index e51ab26e0..c3753b290 100644 --- a/program/include/rcube_message.php +++ b/program/include/rcube_message.php @@ -500,7 +500,7 @@ class rcube_message { if (strlen($part->mime_id)) $this->mime_parts[$part->mime_id] = &$part; - + if (is_array($part->parts)) for ($i=0; $i<count($part->parts); $i++) $this->get_mime_numbers($part->parts[$i]); @@ -518,18 +518,17 @@ class rcube_message if (!isset($part->body)) $part->body = $this->imap->get_message_part($this->uid, $part->mime_id, $part); - require_once('lib/tnef_decoder.inc'); - $parts = array(); - $tnef_arr = tnef_decode($part->body); + $tnef = new tnef_decoder; + $tnef_arr = $tnef->decompress($part->body); foreach ($tnef_arr as $pid => $winatt) { $tpart = new rcube_message_part; $tpart->filename = trim($winatt['name']); $tpart->encoding = 'stream'; - $tpart->ctype_primary = trim(strtolower($winatt['type0'])); - $tpart->ctype_secondary = trim(strtolower($winatt['type1'])); + $tpart->ctype_primary = trim(strtolower($winatt['type'])); + $tpart->ctype_secondary = trim(strtolower($winatt['subtype'])); $tpart->mimetype = $tpart->ctype_primary . '/' . $tpart->ctype_secondary; $tpart->mime_id = 'winmail.' . $part->mime_id . '.' . $pid; $tpart->size = $winatt['size']; @@ -538,7 +537,7 @@ class rcube_message $parts[] = $tpart; unset($tnef_arr[$pid]); } - + return $parts; } @@ -584,7 +583,7 @@ class rcube_message unset($matches[$pid]); } } - + return $parts; } |