Aleksander Machniak
2012-05-22 041c93ce0bc00cb6417ce2e4bdce2ed84d37f50a
program/include/rcube_message.php
@@ -17,9 +17,6 @@
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
 $Id$
*/
@@ -33,9 +30,9 @@
class rcube_message
{
    /**
     * Instace of rcmail.
     * Instace of framework class.
     *
     * @var rcmail
     * @var rcube
     */
    private $app;
@@ -655,23 +652,29 @@
        $parts = array();
        // FIXME: line length is max.65?
        $uu_regexp = '/begin [0-7]{3,4} ([^\n]+)\n(([\x21-\x7E]{0,65}\n)+)`\nend/s';
        $uu_regexp = '/begin [0-7]{3,4} ([^\n]+)\n/s';
        if (preg_match_all($uu_regexp, $part->body, $matches, PREG_SET_ORDER)) {
            // remove attachments bodies from the message body
            $part->body = preg_replace($uu_regexp, '', $part->body);
            // update message content-type
            $part->ctype_primary   = 'multipart';
            $part->ctype_secondary = 'mixed';
            $part->mimetype        = $part->ctype_primary . '/' . $part->ctype_secondary;
            $uu_endstring = "`\nend\n";
            // add attachments to the structure
            foreach ($matches as $pid => $att) {
                $startpos = strpos($part->body, $att[1]) + strlen($att[1]) + 1; // "\n"
                $endpos = strpos($part->body, $uu_endstring);
                $filebody = substr($part->body, $startpos, $endpos-$startpos);
                // remove attachments bodies from the message body
                $part->body = substr_replace($part->body, "", $startpos, $endpos+strlen($uu_endstring)-$startpos);
                $uupart = new rcube_message_part;
                $uupart->filename = trim($att[1]);
                $uupart->encoding = 'stream';
                $uupart->body     = convert_uudecode($att[2]);
                $uupart->body     = convert_uudecode($filebody);
                $uupart->size     = strlen($uupart->body);
                $uupart->mime_id  = 'uu.' . $part->mime_id . '.' . $pid;
@@ -682,6 +685,9 @@
                $parts[] = $uupart;
                unset($matches[$pid]);
            }
            // remove attachments bodies from the message body
            $part->body = preg_replace($uu_regexp, '', $part->body);
        }
        return $parts;