program/lib/Roundcube/rcube_message.php | ●●●●● patch | view | raw | blame | history | |
program/lib/Roundcube/rcube_message_header.php | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/func.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/get.inc | ●●●●● patch | view | raw | blame | history | |
skins/classic/mail.css | ●●●●● patch | view | raw | blame | history | |
skins/larry/mail.css | ●●●●● patch | view | raw | blame | history | |
skins/larry/templates/message.html | ●●●●● patch | view | raw | blame | history | |
skins/larry/templates/messagepreview.html | ●●●●● patch | view | raw | blame | history |
program/lib/Roundcube/rcube_message.php
@@ -320,8 +320,15 @@ private function parse_structure($structure, $recursive = false) { // real content-type of message/rfc822 part if ($structure->mimetype == 'message/rfc822' && $structure->real_mimetype) if ($structure->mimetype == 'message/rfc822' && $structure->real_mimetype) { $mimetype = $structure->real_mimetype; // parse headers from message/rfc822 part if (!isset($structure->headers['subject'])) { list($headers, $dump) = explode("\r\n\r\n", $this->get_part_content($structure->mime_id, null, true, 4096)); $structure->headers = rcube_mime::parse_headers($headers); } } else $mimetype = $structure->mimetype; program/lib/Roundcube/rcube_message_header.php
@@ -235,6 +235,22 @@ $this->others[$name] = $value; } } /** * Factory method to instantiate headers from a data array * * @param array Hash array with header values * @return object rcube_message_header instance filled with headers values */ public static function from_array($arr) { $obj = new rcube_message_header; foreach ($arr as $k => $v) $obj->set($k, $v); return $obj; } } program/steps/mail/func.inc
@@ -5,7 +5,7 @@ | program/steps/mail/func.inc | | | | This file is part of the Roundcube Webmail client | | Copyright (C) 2005-2010, The Roundcube Dev Team | | Copyright (C) 2005-2012, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | @@ -939,13 +939,13 @@ /** * return table with message headers */ function rcmail_message_headers($attrib, $headers=NULL) function rcmail_message_headers($attrib, $headers=null) { global $OUTPUT, $MESSAGE, $PRINT_MODE, $RCMAIL; static $sa_attrib; // keep header table attrib if (is_array($attrib) && !$sa_attrib) if (is_array($attrib) && !$sa_attrib && !$attrib['valueof']) $sa_attrib = $attrib; else if (!is_array($attrib) && is_array($sa_attrib)) $attrib = $sa_attrib; @@ -954,8 +954,13 @@ return FALSE; // get associative array of headers object if (!$headers) $headers = is_object($MESSAGE->headers) ? get_object_vars($MESSAGE->headers) : $MESSAGE->headers; if (!$headers) { $headers_obj = $MESSAGE->headers; $headers = get_object_vars($MESSAGE->headers); } else { $headers_obj = rcube_message_header::from_array($headers); } // show these headers $standard_headers = array('subject', 'from', 'to', 'cc', 'bcc', 'replyto', @@ -1031,7 +1036,7 @@ } $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', array('output' => $output_headers, 'headers' => $MESSAGE->headers, 'exclude' => $exclude_headers)); array('output' => $output_headers, 'headers' => $headers_obj, 'exclude' => $exclude_headers)); // single header value is requested if (!empty($attrib['valueof'])) @@ -1110,8 +1115,9 @@ if (!empty($MESSAGE->parts)) { foreach ($MESSAGE->parts as $i => $part) { if ($part->type == 'headers') $out .= rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : NULL, $part->headers); if ($part->type == 'headers') { $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers)); } else if ($part->type == 'content') { // unsapported if ($part->realtype) { @@ -1139,6 +1145,15 @@ if (!isset($part->body)) $part->body = $MESSAGE->get_part_content($part->mime_id); // extract headers from message/rfc822 parts if ($part->mimetype == 'message/rfc822') { list($hdrs, $body) = explode("\r\n\r\n", $part->body, 2); if ($hdrs && $body && preg_match('/^[\w-]+:\s/i', $hdrs)) { $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, rcube_mime::parse_headers($hdrs))); $part->body = $body; } } // message is cached but not exists (#1485443), or other error if ($part->body === false) { rcmail_message_error($MESSAGE->uid); program/steps/mail/get.inc
@@ -266,6 +266,11 @@ $filename = str_ireplace('attachment', 'attach', $filename); } // add filename extension if missing if (!pathinfo($filename, PATHINFO_EXTENSION) && ($extensions = rcube_mime::get_mime_extensions($mimetype))) { $filename .= '.' . $extensions[0]; } header("Content-Disposition: $disposition; filename=\"$filename\""); // handle tiff to jpeg conversion skins/classic/mail.css
@@ -1070,6 +1070,17 @@ background-color: #F4F4F4; } #messagebody table.headers-table { margin: 16px 6px 6px 6px; } div.message-partheaders + div.message-part { border-top: 0; padding-top: 4px; } table.headers-table tr td { font-size: 11px; skins/larry/mail.css
@@ -999,12 +999,14 @@ } div.message-part, div.message-htmlpart { padding: 0 2px 10px 2px; div.message-htmlpart, div.message-partheaders { padding: 10px 2px; border-top: 1px solid #ccc; } #messagebody div:first-child { padding-top: 0; border-top: 0; } @@ -1045,6 +1047,24 @@ border-right: 2px solid #bb0000; } div.message-partheaders { margin-top: 8px; padding: 8px 0; } div.message-partheaders .headers-table { width: 100%; } div.message-partheaders .headers-table td.header-title { width: auto; padding-left: 0; } div.message-partheaders .headers-table td.header { width: 88%; } #messagebody > hr { color: #fff; background: #fff; skins/larry/templates/message.html
@@ -64,7 +64,7 @@ </div> <div class="leftcol"> <roundcube:object name="messageObjects" id="message-objects" /> <roundcube:object name="messageBody" id="messagebody" /> <roundcube:object name="messageBody" id="messagebody" headertableclass="message-partheaders headers-table" /> </div> </div> skins/larry/templates/messagepreview.html
@@ -47,7 +47,7 @@ </div> <div class="leftcol"> <roundcube:object name="messageObjects" id="message-objects" /> <roundcube:object name="messageBody" id="messagebody" /> <roundcube:object name="messageBody" id="messagebody" headertableclass="message-partheaders headers-table" /> </div> </div>