X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fread_body.php;h=34e7712cce87e089421eac77be33494574014861;hp=dfcf7e24abb1e54538c76a1caceb6f2518e56e1a;hb=dfd93ee7a096bbaa5c753384136cc867dbacaf2c;hpb=56a19f1e5e8a462a1374ae4cb4ecacf48c479da6 diff --git a/src/read_body.php b/src/read_body.php index dfcf7e24..34e7712c 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -1,437 +1,999 @@ ' . - '' . "\n" . - "
" . _("Viewing full header") . ' - '; - if (isset($where) && isset($what)) { - // Got here from a search - echo "'; - } else { - echo ""; - } - echo ''._("View message") . "
\n" . - "\n" . - '' . + '' . "\n"; + } + + return ($result); +} + +function ServerMDNSupport( $read ) { + /* escaping $ doesn't work -> \x36 */ + $ret = preg_match( '/(\x36MDNSent|\\\*)/i', $read ); + return ( $ret ); +} + +function SendMDN ( $recipient , $sender) { + global $imapConnection, $mailbox, $username, $attachment_dir, $SERVER_NAME, + $version, $attachments, $identity, $data_dir, $passed_id; + + $header = sqimap_get_message_header($imapConnection, $passed_id, $mailbox); + $hashed_attachment_dir = getHashedDir($username, $attachment_dir); + + // part 1 (RFC2298) + + $senton = getLongDateString( $header->date ); + $to_array = $header->to; + $to = ''; + foreach ($to_array as $line) { + $to .= " $line "; + } + + $subject = $header->subject; + $now = getLongDateString( time() ); + + $body = _("Your message") . "\r\n\r\n" . + "\t" . _("To:") . ' ' . $to . "\r\n" . + "\t" . _("Subject:") . ' ' . $subject . "\r\n" . + "\t" . _("Sent:") . ' ' . $senton . "\r\n" . + "\r\n" . + sprintf( _("Was displayed on %s"), $now ); + + // part2 (RFC2298) + + $original_recipient = $to; + $original_message_id = $header->message_id; + + $part2 = "Reporting-UA : $SERVER_NAME ; SquirrelMail (version $version) \r\n"; + if ($original_recipient != '') { + $part2 .= "Original-Recipient : $original_recipient\r\n"; + } + $final_recipient = $sender; + $part2 .= "Final-Recipient: rfc822; $final_recipient\r\n" . + "Original-Message-ID : $original_message_id\r\n" . + "Disposition: manual-action/MDN-sent-manually; displayed\r\n"; + + + $localfilename = GenerateRandomString(32, 'FILE', 7); + $full_localfilename = "$hashed_attachment_dir/$localfilename"; + + $fp = fopen( $full_localfilename, 'w'); + fwrite ($fp, $part2); + fclose($fp); + + $newAttachment = array(); + $newAttachment['localfilename'] = $localfilename; + $newAttachment['type'] = "message/disposition-notification"; + + $attachments[] = $newAttachment; + $MDN_to = trim($recipient); + $reply_id = 0; + + return (SendMessage($MDN_to,'','', _("Read:") . ' ' . $subject, $body,$reply_id, True, 3) ); +} + + +function ToggleMDNflag ( $set ) { + global $imapConnection, $passed_id, $mailbox; + sqimap_mailbox_select($imapConnection, $mailbox); + + $sg = $set?'+':'-'; + $cmd = 'STORE ' . $passed_id . ' ' . $sg . 'FLAGS ($MDNSent)'; + $read = sqimap_run_command ($imapConnection, $cmd, true, $response, + $readmessage); +} + +function ClearAttachments() { + global $username, $attachments, $attachment_dir; + + $hashed_attachment_dir = getHashedDir($username, $attachment_dir); + + foreach ($attachments as $info) { + $attached_file = "$hashed_attachment_dir/$info[localfilename]"; + if (file_exists($attached_file)) { + unlink($attached_file); + } + } + + $attachments = array(); +} + + +/* + * Main of read_boby.php -------------------------------------------------- + */ + +/* + Urled vars + ---------- + $passed_id +*/ + +if ( isset( $mailbox ) ) { + $mailbox = urldecode( $mailbox ); +} +$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); +$read = sqimap_mailbox_select($imapConnection, $mailbox, false, false, true); + +do_hook('html_top'); + +/* + * The following code sets necesarry stuff for the MDN thing + */ +if( $default_use_mdn && + ( $mdn_user_support = getPref($data_dir, $username, 'mdn_user_support', $default_use_mdn) ) ) { + + $supportMDN = ServerMDNSupport($read["PERMANENTFLAGS"]); + $flags = sqimap_get_flags ($imapConnection, $passed_id); + $FirstTimeSee = !(in_array( 'Seen', $flags )); +} + +displayPageHeader($color, $mailbox); + + +/* + * The following code shows the header of the message and then exit + */ +if (isset($view_hdr)) { + $read = sqimap_run_command ($imapConnection, "FETCH $passed_id BODY[HEADER]", true, $a, $b); + + echo '
' . + '
'; - - $cnum = 0; - for ($i=1; $i < count($read); $i++) { - $line = htmlspecialchars($read[$i]); - if (eregi("^>", $line)) { - $second[$i] = $line; - $first[$i] = ' '; - $cnum++; - } else if (eregi("^[ |\t]", $line)) { + +/** + * read_body.php + * + * Copyright (c) 1999-2002 The SquirrelMail Project Team + * Licensed under the GNU GPL. For full terms see the file COPYING. + * + * This file is used for reading the msgs array and displaying + * the resulting emails in the right frame. + * + * $Id$ + */ + +require_once('../src/validate.php'); +require_once('../functions/imap.php'); +require_once('../functions/mime.php'); +require_once('../functions/date.php'); +require_once('../functions/url_parser.php'); +require_once('../functions/smtp.php'); + +/** +* Given an IMAP message id number, this will look it up in the cached +* and sorted msgs array and return the index. Used for finding the next +* and previous messages. +* +* returns the index of the next valid message from the array +*/ +function findNextMessage() { + global $msort, $currentArrayIndex, $msgs, $sort; + $result = -1; + + if ($sort == 6) { + if ($currentArrayIndex != 1) { + $result = $currentArrayIndex - 1; + } + } else { + for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { + if ($currentArrayIndex == $msgs[$key]['ID']) { + next($msort); + $key = key($msort); + if (isset($key)) + $result = $msgs[$key]['ID']; + break; + } + } + } + return ($result); +} + +/** Removes just one address from the list of addresses. */ +function RemoveAddress(&$addr_list, $addr) { + if ($addr != '') { + foreach (array_keys($addr_list, $addr) as $key_to_delete) { + unset($addr_list[$key_to_delete]); + } + } +} + +/** returns the index of the previous message from the array. */ +function findPreviousMessage() { + global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, + $mailbox, $data_dir, $username; + + $result = -1; + + if ($sort == 6) { + $numMessages = sqimap_get_num_messages($imapConnection, $mailbox); + if ($currentArrayIndex != $numMessages) { + $result = $currentArrayIndex + 1; + } + } else { + for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { + if ($currentArrayIndex == $msgs[$key]['ID']) { + prev($msort); + $key = key($msort); + if (isset($key)) { + $result = $msgs[$key]['ID']; + break; + } + } + } + } + return ($result); +} + +/** +* Displays a link to a page where the message is displayed more +* "printer friendly". +*/ +function printer_friendly_link() { + global $passed_id, $mailbox, $ent_num, $color, + $pf_subtle_link, + $javascript_on; + + if (strlen(trim($mailbox)) < 1) { + $mailbox = 'INBOX'; + } + + $params = '?passed_ent_id=' . $ent_num . + '&mailbox=' . urlencode($mailbox) . + '&passed_id=' . $passed_id; + + $print_text = _("View Printable Version"); + + if (!$pf_subtle_link) { + /* The link is large, on the bottom of the header panel. */ + $result = '
' . + ' ' . + ''."\n"; + } else { + /* The link is subtle, below "view full header". */ + $result = "
\n"; + } + + /* Output the link. */ + if ($javascript_on) { + $result .= '\n" . + "$print_text\n"; + } else { + $result .= '$print_text\n"; + } + + if (!$pf_subtle_link) { + /* The link is large, on the bottom of the header panel. */ + $result .= '
' . "\n" . + "
" . _("Viewing Full Header") . ' - '. + ''; + } else { + echo "&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more\">"; + } + echo _("View message") . "
\n" . + "\n" . + '
'; + + $cnum = 0; + for ($i=1; $i < count($read); $i++) { + $line = htmlspecialchars($read[$i]); + if (eregi("^>", $line)) { + $second[$i] = $line; + $first[$i] = ' '; + $cnum++; + } else if (eregi("^[ |\t]", $line)) { $second[$i] = $line; $first[$i] = ''; - } else if (eregi("^([^:]+):(.+)", $line, $regs)) { + } else if (eregi("^([^:]+):(.+)", $line, $regs)) { $first[$i] = $regs[1] . ':'; $second[$i] = $regs[2]; - $cnum++; - } else { + $cnum++; + } else { $second[$i] = trim($line); $first[$i] = ''; - } - } - for ($i=0; $i < count($second); $i = $j) { - if (isset($first[$i])) - $f = $first[$i]; - if (isset($second[$i])) - $s = nl2br($second[$i]); - $j = $i + 1; - while ($first[$j] == '' && $j < count($first)) { - $s .= '    ' . nl2br($second[$j]); - $j++; - } - parseEmail($s); - if (isset($f)) echo "$f$s"; - } - echo "
\n"; - echo ''; - sqimap_logout($imapConnection); - exit; - } - - // given an IMAP message id number, this will look it up in the cached and sorted msgs array and - // return the index. used for finding the next and previous messages - - // returns the index of the next valid message from the array - function findNextMessage() { - global $msort, $currentArrayIndex, $msgs, $sort; - - if ($sort == 6) { - if ($currentArrayIndex != 1) { - return $currentArrayIndex - 1; - } - } else { - for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { - if ($currentArrayIndex == $msgs[$key]['ID']) { - next($msort); - $key = key($msort); - if (isset($key)) - return $msgs[$key]['ID']; - } - } - } - return -1; - } - - // Removes just one address from the list of addresses - function RemoveAddress(&$addr_list, $addr) { - if ($addr == '') - return; - foreach (array_keys($addr_list, $addr) as $key_to_delete) - { - unset($addr_list[$key_to_delete]); - } - } - - - // returns the index of the previous message from the array - function findPreviousMessage() { - global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, - $mailbox, $data_dir, $username; - if ($sort == 6) { - $numMessages = sqimap_get_num_messages($imapConnection, $mailbox); - if ($currentArrayIndex != $numMessages) { - return $currentArrayIndex + 1; - } - } else { - for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { - if ($currentArrayIndex == $msgs[$key]['ID']) { - prev($msort); - $key = key($msort); - if (isset($key)) - return $msgs[$key]['ID']; - } - } - } - return -1; - } - - if (isset($msgs)) { - $currentArrayIndex = $passed_id; - /* - for ($i=0; $i < count($msgs); $i++) { - if ($msgs[$i]["ID"] == $passed_id) { - $currentArrayIndex = $i; - break; - } - } - */ - } else { - $currentArrayIndex = -1; - } - - for ($i = 0; $i < count($msgs); $i++) { - if ($msgs[$i]['ID'] == $passed_id) - $msgs[$i]['FLAG_SEEN'] = true; - } - - // $message contains all information about the message - // including header and body - $message = sqimap_get_message($imapConnection, $passed_id, $mailbox); - - /** translate the subject and mailbox into url-able text **/ - $url_subj = urlencode(trim($message->header->subject)); - $urlMailbox = urlencode($mailbox); - $url_replyto = ''; - if (isset($message->header->replyto)) - $url_replyto = urlencode($message->header->replyto); - - $url_replytoall = $url_replyto; - - // If we are replying to all, then find all other addresses and - // add them to the list. Remove duplicates. - // This is somewhat messy, so I'll explain: - // 1) Take all addresses (from, to, cc) (avoid nasty join errors here) - $url_replytoall_extra_addrs = array_merge(array($message->header->from), - $message->header->to, $message->header->cc); - - // 2) Make one big string out of them - $url_replytoall_extra_addrs = join(';', $url_replytoall_extra_addrs); - - // 3) Parse that into an array of addresses - $url_replytoall_extra_addrs = parseAddrs($url_replytoall_extra_addrs); - - // 4) Make them unique -- weed out duplicates - // (Coded for PHP 4.0.0) - $url_replytoall_extra_addrs = - array_keys(array_flip($url_replytoall_extra_addrs)); - - // 5) Remove the addresses we'll be sending the message 'to' - $url_replytoall_avoid_addrs = ''; - if (isset($message->header->replyto)) - $url_replytoall_avoid_addrs = $message->header->replyto; - $url_replytoall_avoid_addrs = parseAddrs($url_replytoall_avoid_addrs); - foreach ($url_replytoall_avoid_addrs as $addr) - { - RemoveAddress($url_replytoall_extra_addrs, $addr); - } - - // 6) Remove our identities from the CC list (they still can be in the - // TO list) only if $include_self_reply_all isn't set or it is ''. - if (getPref($data_dir, $username, 'include_self_reply_all') == '') - { - RemoveAddress($url_replytoall_extra_addrs, - getPref($data_dir, $username, 'email_address')); - $idents = getPref($data_dir, $username, 'identities'); - if ($idents != '' && $idents > 1) - { - for ($i = 1; $i < $idents; $i ++) - { - RemoveAddress($url_replytoall_extra_addrs, - getPref($data_dir, $username, 'email_address' . - $i)); - } - } - } - - // 7) Smoosh back into one nice line - $url_replytoallcc = getLineOfAddrs($url_replytoall_extra_addrs); - - // 8) urlencode() it - $url_replytoallcc = urlencode($url_replytoallcc); - - $dateString = getLongDateString($message->header->date); - - // What do we reply to -- text only, if possible - $ent_num = findDisplayEntity($message); - - /** TEXT STRINGS DEFINITIONS **/ - $echo_more = _("more"); - $echo_less = _("less"); - - if (!isset($show_more_cc)) $show_more_cc = false; - - /** FORMAT THE TO STRING **/ - $i = 0; - $to_string = ''; - $to_ary = $message->header->to; - while ($i < count($to_ary)) { - $to_ary[$i] = htmlspecialchars(decodeHeader($to_ary[$i])); - - if ($to_string) - $to_string = "$to_string
$to_ary[$i]"; - else - $to_string = "$to_ary[$i]"; - - $i++; - if (count($to_ary) > 1) { - if ($show_more == false) { + } + } + for ($i=0; $i < count($second); $i = $j) { + if (isset($first[$i])) { + $f = $first[$i]; + } + if (isset($second[$i])) { + $s = nl2br($second[$i]); + } + $j = $i + 1; + while (($first[$j] == '') && ($j < count($first))) { + $s .= '    ' . nl2br($second[$j]); + $j++; + } + parseEmail($s); + if (isset($f)) { + echo "$f$s"; + } + } + echo "\n" . + ''; + sqimap_logout($imapConnection); + exit; +} + +if (isset($msgs)) { + $currentArrayIndex = $passed_id; +} else { + $currentArrayIndex = -1; +} + +for ($i = 0; $i < count($msgs); $i++) { + if ($msgs[$i]['ID'] == $passed_id) { + $msgs[$i]['FLAG_SEEN'] = true; + } +} + +// $message contains all information about the message +// including header and body +$message = sqimap_get_message($imapConnection, $passed_id, $mailbox); + +/** translate the subject and mailbox into url-able text **/ +$url_subj = urlencode(trim($message->header->subject)); +$urlMailbox = urlencode($mailbox); +$url_replyto = ''; +if (isset($message->header->replyto)) { + $url_replyto = urlencode($message->header->replyto); +} + +$url_replytoall = $url_replyto; + +// If we are replying to all, then find all other addresses and +// add them to the list. Remove duplicates. +// This is somewhat messy, so I'll explain: +// 1) Take all addresses (from, to, cc) (avoid nasty join errors here) +$url_replytoall_extra_addrs = array_merge( + array($message->header->from), + $message->header->to, + $message->header->cc +); + +// 2) Make one big string out of them +$url_replytoall_extra_addrs = join(';', $url_replytoall_extra_addrs); + +// 3) Parse that into an array of addresses +$url_replytoall_extra_addrs = parseAddrs($url_replytoall_extra_addrs); + +// 4) Make them unique -- weed out duplicates +// (Coded for PHP 4.0.0) +$url_replytoall_extra_addrs = + array_keys(array_flip($url_replytoall_extra_addrs)); + +// 5) Remove the addresses we'll be sending the message 'to' +$url_replytoall_avoid_addrs = ''; +if (isset($message->header->replyto)) { + $url_replytoall_avoid_addrs = $message->header->replyto; +} + +$url_replytoall_avoid_addrs = parseAddrs($url_replytoall_avoid_addrs); +foreach ($url_replytoall_avoid_addrs as $addr) { + RemoveAddress($url_replytoall_extra_addrs, $addr); +} + +// 6) Remove our identities from the CC list (they still can be in the +// TO list) only if $include_self_reply_all is turned off +if (!$include_self_reply_all) { + RemoveAddress($url_replytoall_extra_addrs, + getPref($data_dir, $username, 'email_address')); + $idents = getPref($data_dir, $username, 'identities'); + if ($idents != '' && $idents > 1) { + for ($i = 1; $i < $idents; $i ++) { + $cur_email_address = getPref($data_dir, $username, 'email_address' . $i); + RemoveAddress($url_replytoall_extra_addrs, $cur_email_address); + } + } +} + +// 7) Smoosh back into one nice line +$url_replytoallcc = getLineOfAddrs($url_replytoall_extra_addrs); + +// 8) urlencode() it +$url_replytoallcc = urlencode($url_replytoallcc); + +$dateString = getLongDateString($message->header->date); + +// What do we reply to -- text only, if possible +$ent_num = findDisplayEntity($message); + +/** TEXT STRINGS DEFINITIONS **/ +$echo_more = _("more"); +$echo_less = _("less"); + +if (!isset($show_more_cc)) { + $show_more_cc = FALSE; +} + +/** FORMAT THE TO STRING **/ +$i = 0; +$to_string = ''; +$url_to_string = ''; +$to_ary = $message->header->to; +while ($i < count($to_ary)) { + $to_ary[$i] = htmlspecialchars(decodeHeader($to_ary[$i])); + $url_to_string .= $to_ary[$i]; + + if ($to_string) { + $to_string = "$to_string
$to_ary[$i]"; + } else { + $to_string = "$to_ary[$i]"; + } + + $i++; + if (count($to_ary) > 1) { + if ($show_more == false) { if ($i == 1) { - if (isset($where) && isset($what)) { - // from a search - $to_string = "$to_string ($echo_more)"; - } else { - $to_string = "$to_string ($echo_more)"; - } - $i = count($to_ary); + /* From a search... */ + $to_string .= ' ($echo_more)"; + } else { + $to_string .= "sort=$sort&startMessage=$startMessage&show_more=1&show_more_cc=$show_more_cc\">$echo_more)"; + } + $i = count($to_ary); } - } else if ($i == 1) { + } else if ($i == 1) { + /* From a search... */ + $to_string .= ' ($echo_less)"; + $to_string .= 'where='.urlencode($where)."&what=".urlencode($what)."&show_more=0&show_more_cc=$show_more_cc\">$echo_less)"; } else { - $to_string = "$to_string ($echo_less)"; + $to_string .= "sort=$sort&startMessage=$startMessage&show_more=0&show_more_cc=$show_more_cc\">$echo_less)"; } - } - } - } - - /** FORMAT THE CC STRING **/ - $i = 0; - if (isset ($message->header->cc[0]) && trim($message->header->cc[0])){ - $cc_string = ""; - $cc_ary = $message->header->cc; - while ($i < count(decodeHeader($cc_ary))) { - $cc_ary[$i] = htmlspecialchars($cc_ary[$i]); - if ($cc_string) + } + } +} +$url_to_string = urlencode($url_to_string); + + +/** FORMAT THE CC STRING **/ +$i = 0; +$url_cc_string = ''; +if (isset ($message->header->cc[0]) && trim($message->header->cc[0])) { + $cc_string = ''; + $cc_ary = $message->header->cc; + while ($i < count(decodeHeader($cc_ary))) { + $cc_ary[$i] = htmlspecialchars($cc_ary[$i]); + $url_cc_string .= $cc_ary[$i]; + + if ($cc_string) { $cc_string = "$cc_string
$cc_ary[$i]"; - else + } else { $cc_string = "$cc_ary[$i]"; - - $i++; - if (count($cc_ary) > 1) { + } + + $i++; + if (count($cc_ary) > 1) { + if ($show_more_cc == false) { + if ($i == 1) { + /* From a search... */ + $cc_string .= ' ($echo_more)"; + } else { + $cc_string .= "&sort=$sort&startMessage=$startMessage&show_more_cc=1&show_more=$show_more\">$echo_more)"; + } + $i = count($cc_ary); + } + } else if ($i == 1) { + /* From a search... */ + $cc_string .= ' ($echo_less)"; + } else { + $cc_string .= "sort=$sort&startMessage=$startMessage&show_more_cc=0&show_more=$show_more\">$echo_less)"; + } + } + } + } +} +else { + $cc_string = ''; +} +$url_cc_string = urlencode($url_cc_string); + +/** FORMAT THE BCC STRING **/ +$i = 0; +$url_bcc_string = ''; +if (isset ($message->header->bcc[0]) && trim($message->header->bcc[0])){ + $bcc_string = ''; + $bcc_ary = $message->header->bcc; + while ($i < count(decodeHeader($bcc_ary))) { + $bcc_ary[$i] = htmlspecialchars($bcc_ary[$i]); + $url_bcc_string .= $bcc_ary[$i]; + if ($bcc_string) { + $bcc_string = "$bcc_string
$bcc_ary[$i]"; + } else { + $bcc_string = "$bcc_ary[$i]"; + } + + $i++; + if (count($bcc_ary) > 1) { if ($show_more_cc == false) { - if ($i == 1) { - if (isset($where) && isset($what)) { - // from a search - $cc_string = "$cc_string ($echo_more)"; - } else { - $cc_string = "$cc_string ($echo_more)"; - } - $i = count($cc_ary); - } + if ($i == 1) { + /* From a search... */ + $bcc_string .= ' ($echo_more)"; + } else { + $bcc_string .= "sort=$sort&startMessage=$startMessage&show_more_cc=1&show_more=$show_more\">$echo_more)"; + } + $i = count($bcc_ary); + } } else if ($i == 1) { - if (isset($where) && isset($what)) { - // from a search - $cc_string = "$cc_string ($echo_less)"; - } else { - $cc_string = "$cc_string ($echo_less)"; - } + /* From a search... */ + $bcc_string .= ' ($echo_less)"; + } else { + $bcc_string .= "sort=$sort&startMessage=$startMessage&show_more_cc=0&show_more=$show_more\">$echo_less)"; + } } - } - } - } - /** make sure everything will display in HTML format **/ - $from_name = decodeHeader(htmlspecialchars($message->header->from)); - $subject = decodeHeader(htmlspecialchars($message->header->subject)); - - do_hook('read_body_top'); - echo '
' . - '' . "\n" . - ' ' . + '' . + '
' . - ' ' . - ' ' . - ' ' . + '' . + '
' . - ' '; - if ($where && $what) { - echo " "; - } else { - echo " "; - } - echo _("Message List"); - echo ' | '; - if ($where && $what) { - echo " '; - } else { - echo " "; - } - echo _("Delete") . - '  ' . - ' ' . - ' ' . - ' ' . "\n"; - if ($where && $what) { - } else { - if ($currentArrayIndex == -1) { - echo 'Previous | Next'; - } else { - $prev = findPreviousMessage(); - $next = findNextMessage(); - if ($prev != -1) - echo "" . _("Previous") . " | "; - else + } + } +} +else { + $bcc_string = ''; +} +$url_bcc_string = urlencode($url_bcc_string); + +if ($default_use_priority) { + $priority_level = substr($message->header->priority,0,1); + + switch($priority_level) { + /* check for a higher then normal priority. */ + case '1': + case '2': + $priority_string = _("High"); + break; + + /* check for a lower then normal priority. */ + case '4': + case '5': + $priority_string = _("Low"); + break; + + /* check for a normal priority. */ + case '3': + default: + $priority_level = '3'; + $priority_string = _("Normal"); + break; + + } +} + +/** make sure everything will display in HTML format **/ +$from_name = decodeHeader(htmlspecialchars($message->header->from)); +$subject = decodeHeader(htmlspecialchars($message->header->subject)); + +do_hook('read_body_top'); +echo '
' . + '' . + '' . - ' ' . - '
' . + '' . + '' . + '' . + '' . - ' ' . - '
' . + '' . + '"; +} else { + echo "right_main.php?sort=$sort&startMessage=$startMessage&mailbox=$urlMailbox\">"; +} +echo _("Message List") . + ' | ' . + ''; +} else { + echo "sort=$sort&startMessage=$startMessage\">"; +} +echo _("Delete") . ' '; +if (($mailbox == $draft_folder) && ($save_as_draft)) { + echo '| '. + _("Resume Draft") . ''; +} + +echo '  ' . + '' . + '' . + ''; + +if ( !($where && $what) ) { + + if ($currentArrayIndex == -1) { + echo 'Previous | Next'; + } else { + $prev = findPreviousMessage(); + $next = findNextMessage(); + + if ($prev != -1) { + echo '" . _("Previous") . " | "; + } else { echo _("Previous") . ' | '; - if ($next != -1) - echo "" . _("Next") . ""; - else + } + + if ($next != -1) { + echo '" . _("Next") . ""; + } else { echo _("Next"); - } - } - echo ' ' . "\n" . - ' ' . - ' ' . - " " . - _("Forward") . - ' | ' . - " " . - _("Reply") . - ' | ' . - " " . - _("Reply All") . - '  ' . - ' ' . - '
' . - '
' . - ' ' . "\n" . - ' ' . "\n" . - /** subject **/ - " \n" . - ' ' . "\n" . - ' ' ."\n" . - /** from **/ - ' ' . "\n" . - ' ' . "\n" . - ' ' . "\n" . - /** date **/ - ' ' . "\n" . - ' ' . "\n" . - ' ' . "\n" . - /** to **/ - " \n" . - " ' . "\n" . - ' ' . "\n"; - /** cc **/ - if (isset($cc_string)) { - echo " \n" . - " ' . "\n" . - ' ' . "\n"; - } - do_hook("read_body_header"); - echo '
\n" . - _("Subject:") . - " \n" . - " $subject \n" . - " ' . "\n"; - if ($where && $what) { - // Got here from a search - echo "" . _("View full header") . "\n"; - } else { - echo "" . _("View full header") . "\n"; - } - do_hook("read_body_header_right"); - echo '
' . "\n" . - _("From:") . - ' ' . "\n" . - " $from_name \n" . - '
' . "\n" . - _("Date:") . - " \n" . - " $dateString \n" . - '
\n" . - _("To:") . - ' ' . "\n" . - " $to_string \n" . - '
\n" . - ' Cc:' . "\n" . - " \n" . - " $cc_string \n" . - '
' . - '
' . - "\n" . - "
\n" . - '
'; - - $body = formatBody($imapConnection, $message, $color, $wrap_at); - - echo $body . - '
' . - '' . "\n" . - " " . - '
 
' . "\n"; - - do_hook('read_body_bottom'); - do_hook('html_bottom'); - sqimap_logout($imapConnection); -?> \ No newline at end of file + } + } +} + +echo '
' . + '
' . + '' . + ''. + _("Forward") . + ' | ' . + ''. + _("Reply") . + ' | ' . + ''. + _("Reply All") . + '  ' . + '' . + '
' . + '
' . + '' . "\n" . + '' . "\n"; + +/** subject **/ +echo "\n" . + '' . + ' '; + +/** from **/ +echo '' . + '' . + ''; +/** date **/ +echo '' . "\n" . + '' . "\n" . + '' . "\n"; + +/** to **/ +echo "\n" . + "' . "\n" . + '' . "\n"; +/** cc **/ +if (isset($cc_string) && $cc_string <> '') { + echo '' . + "' . + '' . "\n"; +} + +/** bcc **/ +if (isset($bcc_string) && $bcc_string <> '') { + echo ''. + "' . + '' . "\n"; +} +if ($default_use_priority && isset($priority_string) && $priority_string <> '' ) { + echo '' . + "' . + "" . "\n"; +} + +if ($show_xmailer_default) { + $read = sqimap_run_command ($imapConnection, "FETCH $passed_id BODY.PEEK[HEADER.FIELDS (X-Mailer User-Agent)]", true, + $response, $readmessage); + $mailer = substr($read[1], strpos($read[1], " ")); + if (trim($mailer)) { + echo '' . + "' . + "" . "\n"; + } +} + +/* Output the printer friendly link if we are not in subtle mode. */ +if (!$pf_subtle_link) { + echo printer_friendly_link(true); +} + +if ($default_use_mdn) { + if ($mdn_user_support) { + + // debug gives you the capability to remove mdn-flags + // $MDNDebug = false; + $read = sqimap_run_command ($imapConnection, "FETCH $passed_id BODY.PEEK[HEADER.FIELDS (Disposition-Notification-To)]", true, + $response, $readmessage); + $MDN_to = substr($read[1], strpos($read[1], ' ')); + $MDN_flag_present = false; + + $read = sqimap_run_command ($imapConnection, "FETCH $passed_id FLAGS", true, + $response, $readmessage); + + $MDN_flag_present = preg_match( '/.*\$MDNSent/i', $read[0]); + + if (trim($MDN_to) && + (!isset( $sendreceipt ) || $sendreceipt == '' ) ) { + + if ( $MDN_flag_present && $supportMDN) { + $sendreceipt = 'removeMDN'; + $url = "\"read_body.php?mailbox=$mailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&sendreceipt=$sendreceipt\""; + $sendreceipt=''; + /* + if ($MDNDebug ) { + echo '' . + "' . + '' . "\n"; + } else { + */ + echo '' . + "' . + '' . "\n"; + /* + } + */ + + } // when deleted or draft flag is set don't offer to send a MDN response + else if ( ereg('\\Draft',$read[0] || ereg('\\Deleted',$read[0])) ) { + echo '' . + "' . + '' . "\n"; + } + // if no MDNsupport don't use the annoying popup messages + else if ( !$FirstTimeSee ) { + $sendreceipt = 'send'; + $url = "\"read_body.php?mailbox=$mailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&sendreceipt=$sendreceipt\""; + echo '' . + "' . + '' . "\n"; + $sendreceipt=''; + } + else { + $sendreceipt = 'send'; + $url = "\"read_body.php?mailbox=$mailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&sendreceipt=$sendreceipt\""; + if ($javascript_on) { + echo "' . "\n"; + } + echo '' . + "' . + '' . "\n"; + $sendreceipt = ''; + } + } + + if ( !isset( $sendreceipt ) || $sendreceipt == '' ) { + } else if ( $sendreceipt == 'send' ) { + if ( !$MDN_flag_present) { + if (isset($identity) ) { + $final_recipient = getPref($data_dir, $username, 'email_address' . '0', '' ); + } else { + $final_recipient = getPref($data_dir, $username, 'email_address', '' ); + } + + $final_recipient = trim($final_recipient); + if ($final_recipient == '' ) { + $final_recipient = getPref($data_dir, $username, 'email_address', '' ); + } + + if ( SendMDN( $MDN_to, $final_recipient ) > 0 && $supportMDN ) { + ToggleMDNflag( true); + } + } + $sendreceipt = 'removeMDN'; + $url = "\"read_body.php?mailbox=$mailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&sendreceipt=$sendreceipt\""; + $sendreceipt=''; + /* + if ($MDNDebug && $supportMDN) { + echo " \n" . + " ' . "\n" . + ' ' . "\n"; + } else { + */ + echo " \n" . + " ' . "\n" . + ' ' . "\n"; + /* + } + */ + } + elseif ($sendreceipt == 'removeMDN' ) { + ToggleMDNflag ( false ); + + $sendreceipt = 'send'; + $url = "\"read_body.php?mailbox=$mailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&sendreceipt=$sendreceipt\""; + echo ''. + "' . + '' . "\n"; + $sendreceipt = ''; + + } + } +} + +do_hook('read_body_header'); + +echo '
\n" . + _("Subject:") . + "\n" . + "$subject \n" . + "'. + '
' . + _("From:") . + '' . + "$from_name \n" . + '
' . "\n" . + _("Date:") . + "\n" . + "$dateString \n" . + '
\n" . + _("To:") . + '' . "\n" . + "$to_string \n" . + '
" . + 'Cc:' . + "" . + "$cc_string " . + '
" . + 'Bcc:' . + "" . + "$bcc_string " . + '
" . + _("Priority") . ': '. + "" . + "$priority_string " . + '
" . + _("Mailer") . ': '. + "" . + "$mailer " . + '
" . + _("Read receipt") . ': ' . + "" . + '' . + _("send") . + " [" . _("Remove MDN flag") . '] ' . + '
" . + _("Read receipt") . ': ' . + "" . + ''._("send").''. + '
" . + _("Read receipt") . ': '. + "" . + '' . _("requested") . "" . + '
" . + _("Read receipt") . ': ' . + "" . + '' . _("requested") . + "   [" . _("Send read receipt now") . "]" . + '
" . + _("Read receipt") . ': ' . + "" . + '' . _("requested") . "  " . '[' . + _("Send read receipt now") . '] ' ." \n" . + '
\n" . + " "._("Read receipt").": \n". + " \n" . + ' '._("send").''." " . '[' . _("Remove MDN flag") . '] ' . "\n" . + '
\n" . + " "._("Read receipt").": \n". + " \n" . + ' '._("send").''. "\n" . + '
" . + _("Read receipt") . ': ' . + "" . + '' . _("requested") . + "   [" . _("Send read receipt now") . "]" . + '
' . + '
'; +flush(); + +echo "\n" . + "
\n" . + '
'. + formatBody($imapConnection, $message, $color, $wrap_at). + '
' . + '' . "\n" . + " " . + '
 
' . "\n"; + +/* show attached images inline -- if pref'fed so */ +if (($attachment_common_show_images) && + is_array($attachment_common_show_images_list)) { + + foreach ($attachment_common_show_images_list as $img) { + $imgurl = '../src/download.php' . + '?' . + 'passed_id=' . urlencode($img['passed_id']) . + '&mailbox=' . urlencode($mailbox) . + '&passed_ent_id=' . urlencode($img['ent_id']) . + '&absolute_dl=true'; + + echo "\n" . + '' . + '\n" . + "\n" . + "
' . + "\n" . + "
\n"; + + } +} + + +do_hook('read_body_bottom'); +do_hook('html_bottom'); +sqimap_logout($imapConnection); +?> + +