thomascube
2008-06-05 cfe4a6baf462c0befa06b283366945130cabfa5b
Fix structure parsing and html output for multipart messages

4 files modified
19 ■■■■■ changed files
program/include/rcube_imap.php 4 ●●●● patch | view | raw | blame | history
program/lib/imap.inc 3 ●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 9 ●●●● patch | view | raw | blame | history
skins/default/mail.css 3 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.php
@@ -1074,7 +1074,7 @@
      $struct->ctype_primary = 'multipart';
      
      // find first non-array entry
      for ($i=1; count($part); $i++)
      for ($i=1; $i<count($part); $i++)
        if (!is_array($part[$i]))
          {
          $struct->ctype_secondary = strtolower($part[$i]);
@@ -1085,7 +1085,7 @@
      $struct->parts = array();
      for ($i=0, $count=0; $i<count($part); $i++)
        if (is_array($part[$i]) && count($part[$i]) > 5)
        if (is_array($part[$i]) && count($part[$i]) > 3)
          $struct->parts[] = $this->_structure_part($part[$i], ++$count, $struct->mime_id);
          
      return $struct;
program/lib/imap.inc
@@ -2570,8 +2570,7 @@
                $result .= $line;
            } while (!preg_match("/^$key/", $line));
            $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13,
                    -(strlen($result)-strrpos($result, $key)-2)));
            $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, -(strlen($result)-strrpos($result, $key)+1)));
        }
    }
    return $result;
program/steps/mail/func.inc
@@ -549,6 +549,7 @@
  }
  // text/enriched
  else if ($part->ctype_secondary=='enriched') {
    $part->ctype_secondary = 'html';
    return Q(enriched_to_html($body), 'show');
  }
  else
@@ -645,6 +646,10 @@
  // get associative array of headers object
  if (!$headers)
    $headers = is_object($MESSAGE->headers) ? get_object_vars($MESSAGE->headers) : $MESSAGE->headers;
  // add empty subject if none exsists
  if (empty($headers['subject']))
    $headers['subject'] = rcube_label('nosubject');
  
  $header_count = 0;
  
@@ -720,7 +725,7 @@
        $body = rcmail_print_body($part, $safe_mode, !$CONFIG['prefer_html']);
        
        if ($part->ctype_secondary != 'plain')
        if ($part->ctype_secondary == 'html')
          $out .= html::div('message-htmlpart', rcmail_html4inline($body, $attrib['id']));
        else
          $out .= html::div('message-part', $body);
@@ -728,7 +733,7 @@
      }
    }
  else
    $out .= html::div('message-part', html::div('pre', $MESSAGE->body));
    $out .= html::div('message-part', html::div('pre', Q($MESSAGE->body)));
  $ctype_primary = strtolower($MESSAGE->structure->ctype_primary);
skins/default/mail.css
@@ -677,7 +677,8 @@
  border-top: 0;
}
div.message-part a
div.message-part a,
div.message-htmlpart a
{
  color: #0000CC;
}