Example #1
0
function add_forwarded_attachments($parts, $uid, $c_session)
{
    global $conf;
    global $imap;
    global $fd;
    $enc = false;
    $path = $conf['attachments_path'];
    foreach ($parts as $id => $vals) {
        if (strtolower($vals['encoding']) == 'base64' || $vals['encoding'] === 'none') {
            $encoding = false;
        } else {
            $encoding = 'base64';
        }
        $output_id = md5(uniqid(rand(), 1));
        if (substr($path, -1) != $fd) {
            $output_name = $path . $fd . $output_id;
        } else {
            $output_name = $path . $output_id;
        }
        $output_file = fopen($output_name, 'w+');
        if (strtolower($vals['encoding']) == 'base64' || $encoding == 'base64') {
            $enc = 'base64';
        } else {
            $enc = '8bit';
        }
        if (is_resource($output_file)) {
            $size = 0;
            $left_over = '';
            $read_size = 0;
            $lit_size = $imap->get_message_part_start($uid, $id);
            while ($clear = $imap->get_message_part_line()) {
                $read_size += strlen($clear);
                if ($read_size > $lit_size) {
                    $diff = $read_size - $lit_size;
                    $clear = substr($clear, 0, 0 - $diff);
                    $read_size -= $diff;
                }
                if ($encoding == 'base64') {
                    if ($left_over) {
                        $clear = $left_over . $clear;
                    }
                    $data = base64_encode($clear);
                    while ($data) {
                        if (strlen($data) > 76) {
                            fwrite($output_file, substr($data, 0, 76) . "\r\n");
                            $size += 78;
                            $left_over = '';
                            $data = substr($data, 76);
                        } elseif (strlen($data) < 76) {
                            $left_over = base64_decode($data);
                            $data = '';
                        } else {
                            $left_over = base64_decode($data);
                            $data = '';
                        }
                    }
                } else {
                    fwrite($output_file, $clear);
                    $size += strlen($clear);
                }
            }
            if ($left_over && $encoding == 'base64') {
                $last_line = base64_encode($left_over) . "\r\n";
                $size += strlen($last_line);
                fwrite($output_file, $last_line . "\r\n");
            }
            $filename = '';
            if (isset($vals['filename']) && $vals['filename']) {
                $filename = $vals['filename'];
            } elseif (isset($vals['name']) && $vals['name']) {
                $filename = $vals['name'];
            } elseif (isset($vals['description']) && $vals['description']) {
                $filename = $vals['description'];
            }
            if (strtoupper($filename) == 'NIL') {
                $filename = '';
            }
            if (!$filename) {
                $filename = 'message_' . $id;
                $exten = get_mimetype_extension(strtolower($vals['type'] . '/' . $vals['subtype']));
                if (strtolower(substr($filename, -4)) != $exten) {
                    $filename .= $exten;
                }
            }
            $attributes = array('time' => time(), 'encoding' => $enc, 'realname' => $filename, 'filename' => $output_id, 'size' => $size, 'type' => $vals['type'] . '/' . $vals['subtype']);
            $_SESSION['attachments'][$c_session][$output_id] = $attributes;
        }
    }
}
Example #2
0
 function url_action_message($get)
 {
     global $sort_types;
     global $client_sort_types;
     global $max_read_length;
     global $user;
     global $imap;
     global $include_path;
     global $message_part_types;
     global $override_missing_mime_header;
     global $add_contact_headers;
     global $conf;
     global $sort_filters;
     global $fd;
     global $sticky_url;
     $user->page_data['top_link'] = '<a href="' . $sticky_url . '#top">' . $user->str[186] . '</a>';
     if ($user->logged_in) {
         if (isset($_SESSION['iframe_content']) && $_SESSION['iframe_content'] && isset($get['inline_html']) && $get['inline_html']) {
             ob_clean();
             echo $_SESSION['iframe_content'];
             unset($_SESSION['iframe_content']);
             exit;
         }
         do_work_hook('message_page_start');
         $user->page_data['unseen_uids'] = 0;
         $user->page_data['show_previous_options'] = 0;
         $user->page_data['show_up_options'] = 0;
         $user->page_data['show_next_options'] = 0;
         $user->page_data['full_header'] = -1;
         $user->page_data['full_part_header'] = -1;
         $user->page_data['message_part_headers'] = array();
         $user->page_data['sort_filters'] = array('ALL' => 'All messages', 'UNSEEN' => 'Unread', 'SEEN' => 'Read', 'FLAGGED' => 'Flagged', 'UNFLAGGED' => 'Unflagged', 'ANSWERED' => 'Answered', 'UNANSWERED' => 'Unanswered', 'DELETED' => 'Deleted', 'UNDELETED' => 'Not Deleted');
         $user->page_data['message_link_class'] = 'current_page';
         $mailbox = false;
         if (isset($get['mailbox'])) {
             if (isset($_SESSION['folders'][$get['mailbox']])) {
                 $mailbox = $get['mailbox'];
             }
         }
         if (isset($get['full_part_header'])) {
             $user->page_data['full_part_header'] = intval($get['full_part_header']);
         }
         if (isset($get['full_header'])) {
             $user->page_data['full_header'] = intval($get['full_header']);
         }
         if (isset($get['find_response']) && isset($get['current_uid']) && isset($get['response_id'])) {
             $uid = false;
             if (isset($_SESSION['user_settings']['sent_folder'])) {
                 $select_res = $imap->select_mailbox($_SESSION['user_settings']['sent_folder'], false, false, true);
                 if ($select_res) {
                     $search_res = $imap->simple_search('header in-reply-to', false, $get['response_id']);
                     if (isset($search_res[0])) {
                         $get['uid'] = $search_res[0];
                         $uid = $get['uid'];
                         $mailbox = $_SESSION['user_settings']['sent_folder'];
                         $_GET['mailbox'] = $mailbox;
                         $this->errors[] = $user->str[388];
                     }
                 }
             }
             if (!$uid) {
                 $get['uid'] = $get['current_uid'];
                 $this->errors[] = $user->str[389];
             }
         }
         if ($mailbox && isset($get['uid'])) {
             if (isset($_SESSION['frozen_folders'][$mailbox])) {
                 $user->page_data['frozen_dsp'] = '<span id="frozen">(Mailbox Frozen)</span>';
             } else {
                 $user->page_data['frozen_dsp'] = '';
             }
             $id = (int) $get['uid'];
             if ($id) {
                 $sort_by = 'ARRIVAL';
                 if (isset($get['sort_by'])) {
                     if (stristr($_SESSION['imap_capability'], 'SORT')) {
                         $types = $sort_types;
                     } else {
                         $types = $client_sort_types;
                     }
                     if (isset($types[$get['sort_by']])) {
                         $sort_by = $get['sort_by'];
                     }
                 }
                 $filter_by = 'ALL';
                 if (isset($get['filter_by'])) {
                     if (isset($sort_filters[$get['filter_by']])) {
                         $filter_by = $get['filter_by'];
                     }
                 }
                 $user->page_data['filter_by'] = $filter_by;
                 $user->page_data['sort_by'] = $sort_by;
                 if ($imap->select_mailbox($mailbox, $sort_by, false, true, $filter_by)) {
                     do_work_hook('message_page_selected');
                     $user->page_data['mailbox'] = $mailbox;
                     if ($mailbox == 'INBOX') {
                         $user->page_data['mailbox_dsp'] = $user->str[436];
                     } else {
                         $user->page_data['mailbox_dsp'] = $user->htmlsafe($mailbox, 0, 0, 1);
                     }
                     $user->page_data['url_mailbox'] = urlencode($mailbox);
                     if ((!isset($get['show_all_mp']) || !$get['show_all_mp']) && isset($_SESSION['user_settings']['short_message_parts']) && $_SESSION['user_settings']['short_message_parts']) {
                         if (isset($_SESSION['user_settings']['html_first']) && $_SESSION['user_settings']['html_first']) {
                             $mfilter = 'html';
                         } else {
                             $mfilter = 'plain';
                         }
                     } else {
                         $mfilter = false;
                     }
                     if (!isset($get['show_all_mp']) || !$get['show_all_mp']) {
                         $user->page_data['show_all_mp'] = false;
                     } else {
                         $user->page_data['show_all_mp'] = true;
                     }
                     if ($mfilter) {
                         list($struct, $user->page_data['filtered_mp']) = $imap->get_message_structure($id, $mfilter);
                     } else {
                         $user->page_data['filtered_mp'] = 0;
                         $struct = $imap->get_message_structure($id);
                     }
                     $flat_list = $this->get_flat_part_list($struct);
                     $user->page_data['part_nav_list'] = $flat_list;
                     if (isset($get['message_part'])) {
                         $mpart = $get['message_part'];
                     } else {
                         $mpart = 0;
                     }
                     $sort_by = 'ARRIVAL';
                     if (!isset($get['show_image']) && !isset($get['download']) || isset($get['framed_part'])) {
                         $user->page_data['full_message_headers'] = $imap->get_message_headers($id, false);
                     }
                     if ($override_missing_mime_header) {
                         $struct = $this->override_missing_mime_header($struct, $user->page_data['full_message_headers']);
                     }
                     if (isset($_SESSION['user_settings']['html_first']) && $_SESSION['user_settings']['html_first']) {
                         list($message_data, $viewable) = $this->find_message_part($struct, $mpart, 'text', 'html');
                         if (empty($message_data) && !empty($viewable)) {
                             list($message_data, $viewable) = $this->find_message_part($struct, $viewable[0]);
                         }
                     } else {
                         list($message_data, $viewable) = $this->find_message_part($struct, $mpart, 'text', 'plain');
                         if (empty($message_data) && !empty($viewable)) {
                             list($message_data, $viewable) = $this->find_message_part($struct, $viewable[0]);
                         }
                     }
                     if (isset($get['raw_view']) && $get['raw_view']) {
                         $raw = 1;
                         $message_data['imap_id'] = 0;
                         $message_data['type'] = 'text';
                         $message_data['subtype'] = 'plain';
                     } else {
                         $raw = 0;
                     }
                     if (empty($message_data) && !empty($user->page_data['full_message_headers'])) {
                         $message_data['imap_id'] = 0;
                         $message_data['type'] = 'text';
                         $message_data['subtype'] = 'plain';
                         $user->page_data['broken_msg'] = true;
                     }
                     $user->page_data['raw_view'] = $raw;
                     $user->page_data['message_struct'] = $struct;
                     $user->page_data['message_uid'] = $id;
                     $user->page_data['message_part'] = $mpart;
                     $count = $_SESSION['uid_cache'][$mailbox]['total'];
                     $page = 1;
                     if (isset($get['mailbox_page'])) {
                         $page = (int) $get['mailbox_page'];
                         if (!$page) {
                             $page = 1;
                         }
                     }
                     $user->page_data['previous_uid'] = false;
                     $user->page_data['uid_index'] = false;
                     $user->page_data['next_uid'] = false;
                     for ($i = 0; $i < $count; $i++) {
                         if ($id == $_SESSION['uid_cache'][$mailbox]['uids'][$i]) {
                             $page = floor($i / $user->page_data['settings']['mailbox_per_page_count']) + 1;
                             $user->page_data['uid_index'] = $i;
                             if (isset($_SESSION['uid_cache'][$mailbox]['uids'][$i + 1])) {
                                 $user->page_data['next_uid'] = $_SESSION['uid_cache'][$mailbox]['uids'][$i + 1];
                                 $user->page_data['next_uid_page'] = floor(($i + 1) / $user->page_data['settings']['mailbox_per_page_count']) + 1;
                             }
                             if (isset($_SESSION['uid_cache'][$mailbox]['uids'][$i - 1])) {
                                 $user->page_data['previous_uid'] = $_SESSION['uid_cache'][$mailbox]['uids'][$i - 1];
                                 $user->page_data['prev_uid_page'] = floor(($i - 1) / $user->page_data['settings']['mailbox_per_page_count']) + 1;
                             }
                             break;
                         }
                     }
                     $user->page_data['show_small_headers'] = 0;
                     $user->page_data['show_full_headers'] = 0;
                     if (isset($get['full_headers']) && $get['full_headers']) {
                         $user->page_data['show_full_headers'] = 1;
                     } elseif (isset($get['small_headers']) && $get['small_headers']) {
                         $user->page_data['show_small_headers'] = 1;
                     }
                     if (!empty($message_data)) {
                         $user->page_data['message_part'] = $message_data['imap_id'];
                         $type = strtolower($message_data['type'] . '/' . $message_data['subtype']);
                         $user->page_data['charset'] = 'us-ascii';
                         if (isset($message_data['charset'])) {
                             $user->page_data['charset'] = strtolower($message_data['charset']);
                         }
                         $user->page_data['raw_message_type'] = $type;
                         if (isset($message_part_types[$type]) || isset($get['download'])) {
                             $user->page_data['message_type'] = false;
                             if (isset($message_part_types[$type])) {
                                 $user->page_data['message_type'] = $message_part_types[$type];
                             }
                             if (isset($get['show_image']) && strtolower($message_data['type'] == 'image')) {
                                 $data = $imap->get_message_part($id, $message_data['imap_id']);
                                 if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') {
                                     $data = base64_decode($data);
                                 } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'quoted-printable') {
                                     $data = quoted_printable_decode($data);
                                 }
                                 ob_end_clean();
                                 if ($data) {
                                     if (isset($get['thumbnail']) && $get['thumbnail'] && function_exists('imagecreatefromstring')) {
                                         $im = @imagecreatefromstring($data);
                                         $width = imagesx($im);
                                         $height = imagesy($im);
                                         $max_width = 80;
                                         $max_height = 60;
                                         if ($width > $max_width) {
                                             $new_width = $max_width;
                                             $new_height = $new_width * $height / $width;
                                             if ($new_height > $max_height) {
                                                 $new_height = $max_height;
                                                 $new_width = $new_height * $width / $height;
                                             }
                                         } elseif ($height > $max_height) {
                                             $new_height = $max_height;
                                             $new_width = $new_height * $width / $height;
                                         } else {
                                             $new_height = $height;
                                             $new_width = $width;
                                         }
                                         if (!$new_height || !$new_width) {
                                             $new_height = 50;
                                             $new_width = 50;
                                         }
                                         $im2 = @imagecreatetruecolor($new_width, $new_height);
                                         if ($im2 !== false && $im !== false) {
                                             imagecolortransparent($im2, imagecolorallocate($im2, 0, 0, 0));
                                             imagealphablending($im2, false);
                                             imagesavealpha($im2, true);
                                             imagecopyresampled($im2, $im, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                                             imagepng($im2);
                                         }
                                         $imap->disconnect();
                                         $user->clean_up();
                                         exit;
                                     }
                                     $size = (int) $message_data['size'];
                                     header("Content-Type: " . $type);
                                     header("Content-Length: " . strlen($data));
                                     echo $data;
                                     $imap->disconnect();
                                     $user->clean_up();
                                     exit;
                                 }
                             } elseif (isset($get['framed_part'])) {
                                 if (isset($message_data['filename']) && $message_data['filename']) {
                                     $name = $message_data['filename'];
                                 } elseif (isset($message_data['name']) && $message_data['name']) {
                                     $name = $message_data['name'];
                                 } else {
                                     $name = 'message_' . $message_data['imap_id'];
                                 }
                                 $exten = get_mimetype_extension($type);
                                 if (strtolower(substr($name, -4)) != $exten) {
                                     $name .= $exten;
                                 }
                                 $encoding = false;
                                 if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') {
                                     $encoding = 'base64_decode';
                                 } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding'] == 'quoted-printable')) {
                                     $encoding = 'quoted_decode';
                                 }
                                 $left_over = '';
                                 $read_size = 0;
                                 $lit_size = $imap->get_message_part_start($id, $message_data['imap_id']);
                                 header("Content-Type: {$type}");
                                 header('Content-Transfer-Encoding: binary');
                                 header('Accept-Ranges: bytes');
                                 header("Pragma: public");
                                 header("Expires: 0");
                                 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                                 ob_end_clean();
                                 while ($data = $imap->get_message_part_line()) {
                                     $read_size += strlen($data);
                                     if ($read_size > $lit_size) {
                                         $extra = $read_size - $lit_size;
                                         if (strlen($data) > $extra) {
                                             $data = substr($data, 0, strlen($data) - $extra);
                                         } else {
                                             $data = false;
                                         }
                                     }
                                     if ($data && $encoding == 'base64_decode') {
                                         $data = base64_decode($data);
                                     } elseif ($data && $encoding == 'quoted_decode') {
                                         $data = $user->user_action->quoted_decode($data);
                                     }
                                     if ($data) {
                                         echo $data;
                                         flush();
                                     }
                                     $data = false;
                                 }
                                 $imap->disconnect();
                                 $user->clean_up();
                                 exit;
                             } elseif (isset($get['download'])) {
                                 if (isset($message_data['filename']) && $message_data['filename']) {
                                     $name = $message_data['filename'];
                                 } elseif (isset($message_data['name']) && $message_data['name']) {
                                     $name = $message_data['name'];
                                 } else {
                                     $name = 'message_' . $message_data['imap_id'];
                                 }
                                 $exten = get_mimetype_extension($type);
                                 if (strtolower(substr($name, -4)) != $exten) {
                                     $name .= $exten;
                                 }
                                 $encoding = false;
                                 if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') {
                                     $encoding = 'base64_decode';
                                 } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding'] == 'quoted-printable')) {
                                     $encoding = 'quoted_decode';
                                 }
                                 $left_over = '';
                                 $read_size = 0;
                                 $lit_size = $imap->get_message_part_start($id, $message_data['imap_id']);
                                 header("Content-Type: text");
                                 //$type");
                                 header('Content-Transfer-Encoding: binary');
                                 header('Accept-Ranges: bytes');
                                 if (isset($message_data['att_size']) && intval($message_data['att_size']) > 0) {
                                     header('Content-Length: ' . $message_data['att_size']);
                                 } elseif (!$encoding && intval($lit_size) > 0) {
                                     header('Content-Length: ' . $lit_size);
                                 }
                                 header("Pragma: public");
                                 header("Expires: 0");
                                 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                                 header('Content-Disposition: attachment; filename="' . $name . '"');
                                 ob_end_clean();
                                 while ($data = $imap->get_message_part_line()) {
                                     $read_size += strlen($data);
                                     if ($read_size > $lit_size) {
                                         $extra = $read_size - $lit_size;
                                         if (strlen($data) > $extra) {
                                             $data = substr($data, 0, strlen($data) - $extra);
                                         } else {
                                             $data = false;
                                         }
                                     }
                                     if ($data && $encoding == 'base64_decode') {
                                         $data = base64_decode($data);
                                     } elseif ($data && $encoding == 'quoted_decode') {
                                         $data = $user->user_action->quoted_decode($data);
                                     }
                                     if ($data) {
                                         echo $data;
                                     }
                                     $data = false;
                                 }
                                 $imap->disconnect();
                                 $user->clean_up();
                                 ob_flush();
                                 flush();
                                 exit;
                             } else {
                                 /*if (isset($_SESSION['header_cache'][$mailbox][$page][$id]['flags'])) {
                                       if (!stristr($_SESSION['header_cache'][$mailbox][$page][$id]['flags'], 'seen')) {
                                           if (isset($_SESSION['folders'][$mailbox]['status']['unseen']) && $_SESSION['folders'][$mailbox]['status']['unseen'] > 0) {
                                               $_SESSION['folders'][$mailbox]['status']['unseen'] -= 1;
                                               $user->page_data['folders'] = $_SESSION['folders'];
                                           }
                                       }
                                       if (!stristr($_SESSION['header_cache'][$mailbox][$page][$id]['flags'], 'Seen')) {
                                           $_SESSION['header_cache'][$mailbox][$page][$id]['flags'] .= ' \Seen';
                                           if (isset($_SESSION['total_unread']) && $_SESSION['total_unread'] > 0 &&
                                               isset($_SESSION['user_settings']['folder_check']) && is_array($_SESSION['user_settings']['folder_check']) &&
                                               in_array($mailbox, $_SESSION['user_settings']['folder_check'])) {
                                               $_SESSION['total_unread']--;
                                           }
                                       }
                                   }*/
                                 if (!isset($user->page_data['full_message_headers'])) {
                                     $user->page_data['full_message_headers'] = $imap->get_message_headers($id, false);
                                 }
                                 $user->page_data['message_headers'] = $this->prep_headers($user->page_data['full_message_headers']);
                                 if (!$user->page_data['charset']) {
                                     foreach ($user->page_data['message_headers'] as $vals) {
                                         if (strtolower($vals[0]) == 'content-type') {
                                             if (preg_match("/charset=([^\\s;]+)/", $vals[1], $matches)) {
                                                 $user->page_data['charset'] = trim(str_replace(array("'", '"'), '', $matches[1]));
                                             }
                                             break;
                                         }
                                     }
                                 }
                                 if (count($user->page_data['part_nav_list']) > 1) {
                                     $parent_id = 0;
                                     foreach ($flat_list as $vals) {
                                         if ($vals[0] == $message_data['imap_id'] && $vals[1]) {
                                             $parent_id = $vals[1];
                                             break;
                                         }
                                     }
                                     if ($parent_id && $parent_id != 1) {
                                         $user->page_data['message_part_headers'] = $this->prep_headers($imap->get_message_headers($id, $parent_id));
                                     }
                                 }
                                 if ($raw) {
                                     $user->page_data['message_data'] = $imap->get_message_part($id, false, $raw, $max_read_length);
                                     if (isset($user->page_data['message_part_headers'])) {
                                         unset($user->page_data['message_part_headers']);
                                     }
                                     $user->page_data['part_nav_list'] = array();
                                 } elseif ($message_part_types[$type] == 'text' || $message_part_types[$type] == 'html') {
                                     $user->page_data['message_data'] = $imap->get_message_part($id, $message_data['imap_id'], $raw, $max_read_length);
                                     if ($imap->max_read) {
                                         $this->errors[] = $user->str[390];
                                         $imap->max_read = false;
                                     }
                                     if ($message_part_types[$type] == 'html') {
                                         if (isset($get['show_external_images'])) {
                                             if ($get['show_external_images']) {
                                                 $user->page_data['show_external_images'] = true;
                                             } else {
                                                 $user->page_data['show_external_images'] = false;
                                             }
                                         }
                                     }
                                     if (!$raw) {
                                         if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') {
                                             $user->page_data['message_data'] = base64_decode($user->page_data['message_data']);
                                         } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding'] == 'quoted-printable')) {
                                             $user->page_data['message_data'] = $user->user_action->quoted_decode($user->page_data['message_data']);
                                         }
                                     }
                                     if (isset($conf['html_message_iframe']) && $conf['html_message_iframe'] && $message_part_types[$type] == 'html') {
                                         if ($user->sub_class_names['url']) {
                                             $class_name = 'site_page_' . $user->sub_class_names['url'];
                                             $pd = hm_new($class_name);
                                         } else {
                                             $pd = hm_new('site_page');
                                         }
                                         $_SESSION['iframe_content'] = $pd->print_message_iframe_content();
                                     }
                                     if (strstr($type, 'x-vcard')) {
                                         require_once $include_path . 'lib' . $fd . 'vcard.php';
                                         $vcard = hm_new('vcard');
                                         $vcard->import_card(explode("\r\n", $user->page_data['message_data']));
                                         if (is_array($vcard->card) && !empty($vcard->card)) {
                                             $user->page_data['card_detail'] = $vcard->card;
                                             $_SESSION['import_card_detail'] = $vcard->card;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     if (!isset($user->page_data['full_message_headers'])) {
                         $user->page_data['full_message_headers'] = $imap->get_message_headers($id, false);
                     }
                     if (!isset($user->page_data['charset'])) {
                         $user->page_data['charset'] = false;
                         if (isset($user->page_data['message_headers'])) {
                             foreach ($user->page_data['message_headers'] as $vals) {
                                 if (strtolower($vals[0]) == 'content-type') {
                                     if (preg_match("/charset=([^ ]+)/", $vals[1], $matches)) {
                                         $user->page_data['charset'] = trim(str_replace(array("'", '"'), '', $matches[1]));
                                     }
                                     break;
                                 }
                             }
                         }
                     }
                     $user->page_data['mailbox_page'] = $page;
                     $user->page_data['mailbox_total'] = $_SESSION['uid_cache'][$mailbox]['total'];
                     $user->page_data['page_links'] = build_page_links($page, $_SESSION['uid_cache'][$mailbox]['total'], $user->page_data['settings']['mailbox_per_page_count'], '?page=mailbox&amp;sort_by=' . $sort_by . '&amp;filter_by=' . $filter_by . '&amp;mailbox=' . urlencode($mailbox), $user->str[88]);
                     $user->dsp_page = 'message';
                     $_SESSION['last_message_read'][$mailbox] = $id;
                     if (isset($get['print_view']) && $get['print_view']) {
                         ob_clean();
                         if ($user->sub_class_names['url']) {
                             $class_name = 'site_page_' . $user->sub_class_names['url'];
                             $pd = hm_new($class_name);
                         } else {
                             $pd = hm_new('site_page');
                         }
                         echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                           <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
                             <head><title>Message Print View</title><base href="' . $pd->pd['base_href'] . '" /><title id="title">' . $pd->user->page_title . '</title>
                             <style type="text/css">table {padding:10px;margin-left:-10px;padding-bottom:20px;}
                             b{font-weight: normal;} table td {padding-left:10px;} table th {text-align:left;font-weight:normal;}
                             pre {white-space: pre-wrap; white-space: -moz-pre-wrap !important; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;}
                             </style></head>
                         <body style="background: none; background-image: none; background-color: #fff; color: #000; margin: 30px;">' . '<table>' . $pd->print_message_headers() . '</table>';
                         if (isset($pd->pd['message_part_headers'])) {
                             '<table>' . $pd->print_part_headers() . '</table>';
                         }
                         //$pd->pd['raw_view'] = true;
                         switch ($user->page_data['message_type']) {
                             case 'text':
                             case 'image':
                             case 'html':
                                 echo $pd->{'print_message_' . $user->page_data['message_type']}();
                                 break;
                             default:
                                 echo '<div style="text-align: center; margin-top: 100px;">Unsupported MIME type: ' . $user->htmlsafe($user->page_data['raw_message_type']) . '</div>';
                                 break;
                         }
                         echo '
                     </body>
                     </html>';
                         exit;
                     }
                     if (isset($get['show_up_options'])) {
                         $user->page_data['show_up_options'] = 1;
                     }
                     if (isset($get['show_next_options'])) {
                         $user->page_data['show_next_options'] = 1;
                     }
                     if (isset($get['show_previous_options'])) {
                         $user->page_data['show_previous_options'] = 1;
                     }
                     $new_contacts = array();
                     if (isset($user->page_data['full_message_headers'])) {
                         foreach ($user->page_data['full_message_headers'] as $vals) {
                             $i = $vals[0];
                             $v = $vals[1];
                             if (!in_array(strtolower($i), $add_contact_headers)) {
                                 continue;
                             }
                             if (strstr($v, ' ')) {
                                 $bits = explode(' ', trim($v));
                             } elseif (strstr($v, ',')) {
                                 $bits = explode(',', trim($v));
                             } else {
                                 $bits = array($v);
                             }
                             foreach ($bits as $val) {
                                 $val = rtrim(ltrim($val, '<,'), '>,');
                                 if ($this->match_email($val)) {
                                     $new_contacts[] = $val;
                                 }
                             }
                         }
                     }
                     $user->page_data['new_contacts'] = $new_contacts;
                     list($total_unread, $user->page_data['unseen_uids']) = $imap->get_mailbox_unseen($mailbox);
                     if ($total_unread) {
                         $user->page_data['unseen_uids'][] = $user->page_data['message_uid'];
                         $user->page_data['unseen_uids'] = $this->sort_uid_list($user->page_data['unseen_uids'], $mailbox);
                     }
                     if (isset($_SESSION['search_results'][$mailbox])) {
                         $user->page_data['search_results'] = $this->sort_uid_list($_SESSION['search_results'][$mailbox], $mailbox);
                     }
                     if (isset($_SESSION['uid_cache'][$mailbox]['thread_data'])) {
                         $user->page_data['thread_data'] = $_SESSION['uid_cache'][$mailbox]['thread_data'];
                     }
                     $user->page_data['folders'] = $_SESSION['folders'];
                     $user->page_title .= ' | Message |';
                 }
             }
         }
     }
 }