summaryrefslogtreecommitdiff
path: root/program/include/rcube_imap.php
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2008-06-07 18:48:59 +0000
committeralecpl <alec@alec.pl>2008-06-07 18:48:59 +0000
commitb541216c53f8fd286ccb0e9e6172ffdcce8f2592 (patch)
tree84a443ecfa25dab671c17009f484737dba4e6231 /program/include/rcube_imap.php
parentc8fb2b778491036db4c1b5f4fcc3b9a3c21efcc1 (diff)
-added encoding detection for attachment names when message part hasn't got charset definition (#1484969)
Diffstat (limited to 'program/include/rcube_imap.php')
-rw-r--r--program/include/rcube_imap.php10
1 files changed, 7 insertions, 3 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 574ed6cc2..9d8f6d314 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1159,10 +1159,13 @@ class rcube_imap
if (is_array($part[8]) && empty($struct->parts))
$struct->parts[] = $this->_structure_part($part[8], ++$count, $struct->mime_id);
}
-
+
// normalize filename property
if ($filename_mime = $struct->d_parameters['filename'] ? $struct->d_parameters['filename'] : $struct->ctype_parameters['name'])
- $struct->filename = rcube_imap::decode_mime_string($filename_mime, $this->default_charset);
+ {
+ $struct->filename = rcube_imap::decode_mime_string($filename_mime,
+ $struct->charset ? $struct->charset : rc_detect_encoding($filename_mime, $this->default_charset));
+ }
else if ($filename_encoded = $struct->d_parameters['filename*'] ? $struct->d_parameters['filename*'] : $struct->ctype_parameters['name*'])
{
// decode filename according to RFC 2231, Section 4
@@ -1170,7 +1173,8 @@ class rcube_imap
$struct->filename = rcube_charset_convert(urldecode($filename_urlencoded), $filename_charset);
}
else if (!empty($struct->headers['content-description']))
- $struct->filename = rcube_imap::decode_mime_string($struct->headers['content-description'], $this->default_charset);
+ $struct->filename = rcube_imap::decode_mime_string($struct->headers['content-description'],
+ $struct->charset ? $struct->charset : rc_detect_encoding($struct->headers['content-description'],$this->default_charset));
return $struct;
}