diff options
author | alecpl <alec@alec.pl> | 2009-05-13 07:09:49 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2009-05-13 07:09:49 +0000 |
commit | 1c5be6f792510c842370a2869603c6ec7ae9a29e (patch) | |
tree | 907c62cfb732dae7f3c08925e7b3eeee0af412c8 /program/include | |
parent | 9c6dfdc1e8c2769d0893e52d7b9d9bcc7b7bffcb (diff) |
- Support UUencode content encoding (#1485839)
Diffstat (limited to 'program/include')
-rw-r--r-- | program/include/rcube_imap.php | 64 |
1 files changed, 21 insertions, 43 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 9951bda69..6d44efb4b 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -1433,44 +1433,19 @@ class rcube_imap if (!$part) $part = 'TEXT'; - if ($print) - { - $mode = $o_part->encoding == 'base64' ? 3 : ($o_part->encoding == 'quoted-printable' ? 1 : 2); - $body = iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, $mode); + $body = iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, + $o_part->encoding, $print, $fp); - // we have to decode the part manually before printing - if ($mode == 1) - { - echo $this->mime_decode($body, $o_part->encoding); - $body = true; - } - } - else - { - if ($fp && $o_part->encoding == 'base64') - return iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, 3, $fp); - else - $body = iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, 1); + if ($fp || $print) + return true; - // decode part body - if ($o_part->encoding) - $body = $this->mime_decode($body, $o_part->encoding); + // convert charset (if text or message part) + if ($o_part->ctype_primary=='text' || $o_part->ctype_primary=='message') { + // assume default if no charset specified + if (empty($o_part->charset)) + $o_part->charset = $this->default_charset; - // convert charset (if text or message part) - if ($o_part->ctype_primary=='text' || $o_part->ctype_primary=='message') - { - // assume default if no charset specified - if (empty($o_part->charset)) - $o_part->charset = $this->default_charset; - - $body = rcube_charset_convert($body, $o_part->charset); - } - - if ($fp) - { - fwrite($fp, $body); - return true; - } + $body = rcube_charset_convert($body, $o_part->charset); } return $body; @@ -1487,8 +1462,7 @@ class rcube_imap function &get_body($uid, $part=1) { $headers = $this->get_headers($uid); - return rcube_charset_convert( - $this->mime_decode($this->get_message_part($uid, $part), 'quoted-printable'), + return rcube_charset_convert($this->get_message_part($uid, $part, NULL), $headers->charset ? $headers->charset : $this->default_charset); } @@ -1535,7 +1509,7 @@ class rcube_imap if (!($msg_id = $this->_uid2id($uid))) return FALSE; - iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, NULL, 2); + iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, NULL, NULL, true); } @@ -2665,10 +2639,6 @@ class rcube_imap { switch (strtolower($encoding)) { - case '7bit': - return $input; - break; - case 'quoted-printable': return quoted_printable_decode($input); break; @@ -2676,7 +2646,15 @@ class rcube_imap case 'base64': return base64_decode($input); break; - + + case 'x-uuencode': + case 'x-uue': + case 'uue': + case 'uuencode': + return convert_uudecode($input); + break; + + case '7bit': default: return $input; } |