alecpl
2010-05-20 c1439f925dbfbd20566337a0251a6b4e85e9a2f9
- Fix message/rfc822 attachments containing only attachments are not parsed properly (#1486743)


2 files modified
10 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_message.php 9 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Fix message/rfc822 attachments containing only attachments are not parsed properly (#1486743)
- Fix %00 character in winmail.dat attachments names (#1486738)
- Fix handling errors of folder deletion (#1486705)
- Parse untagged CAPABILITY response for LOGIN command (#1486742)
program/include/rcube_message.php
@@ -393,7 +393,7 @@
        // ignore "virtual" protocol parts
        else if ($primary_type == 'protocol')
          continue;
        // part is Microsoft Outlook TNEF (winmail.dat)
        else if ($part_mimetype == 'application/ms-tnef') {
          foreach ((array)$this->imap->tnef_decode($mail_part, $structure->headers['uid']) as $tnef_part) {
@@ -401,7 +401,6 @@
            $this->attachments[] = $tnef_part;
          }
        }
        // part is a file/attachment
        else if (preg_match('/^(inline|attach)/', $mail_part->disposition) ||
                 $mail_part->headers['content-id'] || (empty($mail_part->disposition) && $mail_part->filename)) {
@@ -418,9 +417,13 @@
              $mail_part->content_id = preg_replace(array('/^</', '/>$/'), '', $mail_part->headers['content-id']);
            if ($mail_part->headers['content-location'])
              $mail_part->content_location = $mail_part->headers['content-base'] . $mail_part->headers['content-location'];
            $this->inline_parts[] = $mail_part;
          }
          // attachment encapsulated within message/rfc822 part needs further decoding (#1486743)
          else if ($part_orig_mimetype == 'message/rfc822') {
            $this->parse_structure($mail_part, true);
          }
          // is a regular attachment
          else if (preg_match('!^[a-z0-9-.+]+/[a-z0-9-.+]+$!i', $part_mimetype)) {
            if (!$mail_part->filename)