Translation of the Read: subject
[squirrelmail.git] / src / read_body.php
index 8d647a54879d6c17595d509cc1b6798329b712c4..0aa2c9ef5b46366ec484ab9e161a3f671532bef6 100644 (file)
@@ -17,7 +17,8 @@ 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
@@ -58,8 +59,9 @@ function RemoveAddress(&$addr_list, $addr) {
 
 /** returns the index of the previous message from the array. */
 function findPreviousMessage() {
-    global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection;
-    global $mailbox, $data_dir, $username;
+    global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection,
+           $mailbox, $data_dir, $username;
+
     $result = -1;
 
     if ($sort == 6) {
@@ -87,26 +89,26 @@ function findPreviousMessage() {
 * "printer friendly".
 */
 function printer_friendly_link() {
-    global $passed_id, $mailbox, $ent_num, $color;
-    global $pf_subtle_link;
-    global $javascript_on;
+    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;
-    $params .= '&mailbox=' . urlencode($mailbox);
-    $params .= '&passed_id=' . $passed_id;
+    $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 = '      <tr bgcolor="' . $color[0] . '">' . "\n" .
-                '        <td class="medText" align="right" valign="top">' . "\n" .
-                '          &nbsp;' . "\n" .
-                '        </td><td class="medText" valign="top" colspan="2">'."\n";
+        $result =       '<tr bgcolor="' . $color[0] . '">' .
+                        '<td class="medText" align="right" valign="top">' .
+                          '&nbsp;' .
+                        '</td><td class="medText" valign="top" colspan="2">'."\n";
     } else {
         /* The link is subtle, below "view full header". */
         $result = "<BR>\n";
@@ -130,22 +132,164 @@ function printer_friendly_link() {
 
     if (!$pf_subtle_link) {
         /* The link is large, on the bottom of the header panel. */
-        $result .= '        </td>' . "\n" .
-                    '      </tr>' . "\n";
+        $result .=         '</td></tr>' . "\n";
     }
 
     return ($result);
 }
 
-/*****************************/
-/*** Main of read_boby.php ***/
-/*****************************/
+function ServerMDNSupport( $read ) {
+
+    $num = 0;
+    $resp = '';
+    while ($num < count($read) ) {
+        $resp .= $read[$num];
+        $num++;
+    }
+    $read[] = split(' * ', $resp);
+    $num = 0;
+    $ret = FALSE;
+    while ( !$ret && $num < count($read) ) {
+        if ( ereg('PERMANENTFLAGS', $read[$num] ) ) {
+            $ret = ( ereg('mdnsent',strtolower($read[$num]) ) || ereg("\\\*", $read[$num] ) );
+        }
+        $num++;
+    }
+    return ( $ret );
+}
+
+function SendMDN ( $recipient , $sender) {
+    global $imapConnection, $mailbox, $username, $attachment_dir, $SERVER_NAME,
+           $version, $attachments, $identity, $data_dir, $passed_id;
+
+    $message = sqimap_get_message($imapConnection, $passed_id, $mailbox);
+    $header = $message->header;
+
+    $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 );
+/*
+    $body = sprintf( _("This message sent on %s to %s with subject \"%s\" has been displayed on %s."),
+                      $senton, $to, $subject, $now ) .
+            "\r\n" .
+            _("This is no guarantee that the message has been read or understood.") . "\r\n";
+*/
+    // 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;
+
+    if ( $set ) {
+        $sg = '+';
+
+    } else {
+        $sg = '-';
+    }
+
+    $cmd = 'STORE ' . $passed_id . ' ' . $sg . 'FLAGS ($MDNSent)';
+    sqimap_mailbox_select($imapConnection, $mailbox);
+    $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
+*/
 
 $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
-sqimap_mailbox_select($imapConnection, $mailbox);
+$read = sqimap_mailbox_select($imapConnection, $mailbox);
+
 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);
+    $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);
 
@@ -159,9 +303,9 @@ if (isset($view_hdr)) {
     } else {
         echo "&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more\">";
     }
-    echo ''._("View message") . "</a></b></center></td></tr></table>\n" .
-        "<table width=\"99%\" cellpadding=2 cellspacing=0 border=0 align=center>\n" .
-        '<tr><td>';
+    echo _("View message") . "</a></b></center></td></tr></table>\n" .
+         "<table width=\"99%\" cellpadding=2 cellspacing=0 border=0 align=center>\n" .
+         '<tr><td>';
 
     $cnum = 0;
     for ($i=1; $i < count($read); $i++) {
@@ -197,8 +341,8 @@ if (isset($view_hdr)) {
         parseEmail($s);
         if (isset($f)) echo "<nobr><tt><b>$f</b>$s</tt></nobr>";
     }
-    echo "</td></tr></table>\n";
-    echo '</body></html>';
+    echo "</td></tr></table>\n" .
+         '</body></html>';
     sqimap_logout($imapConnection);
     exit;
 }
@@ -290,7 +434,9 @@ $ent_num = findDisplayEntity($message);
 $echo_more = _("more");
 $echo_less = _("less");
 
-if (!isset($show_more_cc)) $show_more_cc = false;
+if (!isset($show_more_cc)) {
+    $show_more_cc = FALSE;
+}
 
 /** FORMAT THE TO STRING **/
 $i = 0;
@@ -420,23 +566,23 @@ if ($default_use_priority) {
     switch($priority_level) {
         /* check for a higher then normal priority. */
         case '1':
-        case '2': 
-            $priority_string = _("High"); 
+        case '2':
+            $priority_string = _("High");
             break;
 
         /* check for a lower then normal priority. */
         case '4':
-        case '5': 
-            $priority_string = _("Low"); 
+        case '5':
+            $priority_string = _("Low");
             break;
-            
+
         /* check for a normal priority. */
-        case '3': 
+        case '3':
         default:
             $priority_level = '3';
-            $priority_string = _("Normal"); 
+            $priority_string = _("Normal");
             break;
-            
+
     }
 }
 
@@ -446,13 +592,13 @@ $subject = decodeHeader(htmlspecialchars($message->header->subject));
 
 do_hook('read_body_top');
 echo '<BR>' .
-    '<TABLE CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' . "\n" .
-    '   <TR><TD BGCOLOR="' . $color[9] . '" WIDTH="100%">' . "\n" .
-    '      <TABLE WIDTH="100%" CELLSPACING="0" BORDER="0" CELLPADDING="3">' . "\n" .
-    '         <TR>' . "\n" .
-    '            <TD ALIGN="LEFT" WIDTH="33%">' . "\n" .
-    '               <SMALL>' . "\n" .
-    '<A HREF="' . $base_uri . 'src/';
+     '<TABLE CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' .
+        '<TR><TD BGCOLOR="' . $color[9] . '" WIDTH="100%">' .
+           '<TABLE WIDTH="100%" CELLSPACING="0" BORDER="0" CELLPADDING="3">' .
+              '<TR>' .
+                 '<TD ALIGN="LEFT" WIDTH="33%">' .
+                    '<SMALL>' .
+     '<A HREF="' . $base_uri . 'src/';
 
 if ($where && $what) {
     if( $pos == '' ) {
@@ -478,10 +624,10 @@ if (($mailbox == $draft_folder) && ($save_as_draft)) {
 }
 
 echo '&nbsp;&nbsp;' .
-    '               </SMALL>' . "\n" .
-    '            </TD>' . "\n" .
-    '            <TD WIDTH="33%" ALIGN="CENTER">' . "\n" .
-    '               <SMALL>' . "\n";
+                   '</SMALL>' .
+                '</TD>' .
+                '<TD WIDTH="33%" ALIGN="CENTER">' .
+                   '<SMALL>';
 
 if ( !($where && $what) ) {
 
@@ -505,40 +651,40 @@ if ( !($where && $what) ) {
     }
 }
 
-echo '               </SMALL>' . "\n" .
-    '            </TD><TD WIDTH="33%" ALIGN="RIGHT">' .
-    '               <SMALL>' .
-    '               <A HREF="' . $base_uri . "src/compose.php?forward_id=$passed_id&forward_subj=$url_subj&".
+echo                '</SMALL>' .
+                '</TD><TD WIDTH="33%" ALIGN="RIGHT">' .
+                   '<SMALL>' .
+                   '<A HREF="' . $base_uri . "src/compose.php?forward_id=$passed_id&forward_subj=$url_subj&".
                     ($default_use_priority?"mailprio=$priority_level&":"")
                     ."mailbox=$urlMailbox&ent_num=$ent_num\">" .
     _("Forward") .
     '</A>&nbsp;|&nbsp;' .
-    '               <A HREF="' . $base_uri . "src/compose.php?send_to=$url_replyto&reply_subj=$url_subj&".
+                   '<A HREF="' . $base_uri . "src/compose.php?send_to=$url_replyto&reply_subj=$url_subj&".
                     ($default_use_priority?"mailprio=$priority_level&":"").
                     "reply_id=$passed_id&mailbox=$urlMailbox&ent_num=$ent_num\">" .
     _("Reply") .
     '</A>&nbsp;|&nbsp;' .
-    '               <A HREF="' . $base_uri . "src/compose.php?send_to=$url_replytoall&send_to_cc=$url_replytoallcc&reply_subj=$url_subj&".
+                   '<A HREF="' . $base_uri . "src/compose.php?send_to=$url_replytoall&send_to_cc=$url_replytoallcc&reply_subj=$url_subj&".
                     ($default_use_priority?"mailprio=$priority_level&":"").
                     "reply_id=$passed_id&mailbox=$urlMailbox&ent_num=$ent_num\">" .
     _("Reply All") .
     '</A>&nbsp;&nbsp;' .
-    '               </SMALL>' .
-    '            </TD>' .
-    '         </TR>' .
-    '      </TABLE>' .
-    '   </TD></TR>' .
-    '   <TR><TD CELLSPACING="0" WIDTH="100%">' .
-    '   <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="3">' . "\n" .
-    '      <TR>' . "\n";
+                   '</SMALL>' .
+                '</TD>' .
+             '</TR>' .
+          '</TABLE>' .
+       '</TD></TR>' .
+       '<TR><TD CELLSPACING="0" WIDTH="100%">' .
+       '<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="3">' . "\n" .
+          '<TR>' . "\n";
 
 /** subject **/
-echo "         <TD BGCOLOR=\"$color[0]\" WIDTH=\"10%\" ALIGN=\"right\" VALIGN=\"top\">\n" .
+echo          "<TD BGCOLOR=\"$color[0]\" WIDTH=\"10%\" ALIGN=\"right\" VALIGN=\"top\">\n" .
     _("Subject:") .
-    "         </TD><TD BGCOLOR=\"$color[0]\" WIDTH=\"80%\" VALIGN=\"top\">\n" .
-    "            <B>$subject</B>&nbsp;\n" .
-    "         </TD>\n" .
-    '         <TD ROWSPAN="4" width="10%" BGCOLOR="' . $color[0] .
+             "</TD><TD BGCOLOR=\"$color[0]\" WIDTH=\"80%\" VALIGN=\"top\">\n" .
+                "<B>$subject</B>&nbsp;\n" .
+             "</TD>\n" .
+             '<TD ROWSPAN="4" width="10%" BGCOLOR="' . $color[0] .
     '" ALIGN=right VALIGN=top NOWRAP><small>'.
     '<A HREF="' . $base_uri . "src/read_body.php?mailbox=$urlMailbox&passed_id=$passed_id&";
 
@@ -557,64 +703,64 @@ if ($pf_subtle_link) {
 }
 
 do_hook("read_body_header_right");
-echo '</small></TD>' . "\n" .
-    ' </TR>' ."\n";
+echo '</small></TD>' .
+    ' </TR>';
 
 /** from **/
-echo '      <TR>' . "\n" .
-    '         <TD BGCOLOR="' . $color[0] . '" ALIGN="RIGHT">' . "\n" .
+echo       '<TR>' .
+             '<TD BGCOLOR="' . $color[0] . '" ALIGN="RIGHT">' .
     _("From:") .
-    '         </TD><TD BGCOLOR="' . $color[0] . '">' . "\n" .
-    "            <B>$from_name</B>&nbsp;\n" .
-    '         </TD>' . "\n" .
-    '      </TR>' . "\n";
+             '</TD><TD BGCOLOR="' . $color[0] . '">' .
+                "<B>$from_name</B>&nbsp;\n" .
+             '</TD>' .
+          '</TR>';
 /** date **/
-echo '      <TR>' . "\n" .
-    '         <TD BGCOLOR="' . $color[0] . '" ALIGN="RIGHT">' . "\n" .
+echo       '<TR>' . "\n" .
+             '<TD BGCOLOR="' . $color[0] . '" ALIGN="RIGHT">' . "\n" .
     _("Date:") .
-    "         </TD><TD BGCOLOR=\"$color[0]\">\n" .
-    "            <B>$dateString</B>&nbsp;\n" .
-    '         </TD>' . "\n" .
-    '      </TR>' . "\n";
+             "</TD><TD BGCOLOR=\"$color[0]\">\n" .
+                "<B>$dateString</B>&nbsp;\n" .
+             '</TD>' . "\n" .
+          '</TR>' . "\n";
 
 /** to **/
-echo "      <TR>\n" .
-    "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n" .
+echo       "<TR>\n" .
+             "<TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n" .
     _("To:") .
-    '         </TD><TD BGCOLOR="' . $color[0] . '" VALIGN="TOP">' . "\n" .
-    "            <B>$to_string</B>&nbsp;\n" .
-    '         </TD>' . "\n" .
-    '      </TR>' . "\n";
+             '</TD><TD BGCOLOR="' . $color[0] . '" VALIGN="TOP">' . "\n" .
+                "<B>$to_string</B>&nbsp;\n" .
+             '</TD>' . "\n" .
+          '</TR>' . "\n";
 /** cc **/
 if (isset($cc_string)) {
-    echo "      <TR>\n" .
-        "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n" .
-        '            Cc:' . "\n" .
-        "         </TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>\n" .
-        "            <B>$cc_string</B>&nbsp;\n" .
-        '         </TD>' . "\n" .
-        '      </TR>' . "\n";
+    echo       '<TR>' .
+                 "<TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>" .
+                    'Cc:' .
+                 "</TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>" .
+                    "<B>$cc_string</B>&nbsp;" .
+                 '</TD>' .
+              '</TR>' . "\n";
 }
 
 /** bcc **/
 if (isset($bcc_string)) {
-    echo "      <TR>\n" .
-        "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n" .
-        '            Bcc:' . "\n" .
-        "         </TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>\n" .
-        "            <B>$bcc_string</B>&nbsp;\n" .
-        '         </TD>' . "\n" .
-        '      </TR>' . "\n";
+    echo       '<TR>'.
+                 "<TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>" .
+                    'Bcc:' .
+                 "</TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>" .
+                    "<B>$bcc_string</B>&nbsp;" .
+                 '</TD>' .
+              '</TR>' . "\n";
 }
 if ($default_use_priority) {
     if (isset($priority_string)) {
-        echo "      <TR>\n" .
-            "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n" .
-            "            "._("Priority").": \n".
-            "         </TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>\n" .
-            "            <B>$priority_string</B>&nbsp;\n" .
-            "         </TD>" . "\n" .
-            "      </TR>" . "\n";
+        echo       '<TR>' .
+                     "<TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>" .
+                           _("Priority") . ': '.
+                     "</TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>" .
+                        "<B>$priority_string</B>&nbsp;" .
+                     '</TD>' .
+                  "</TR>" . "\n";
     }
 }
 
@@ -623,13 +769,13 @@ if ($show_xmailer_default) {
                             $response, $readmessage);
     $mailer = substr($read[1], strpos($read[1], " "));
     if (trim($mailer)) {
-        echo "      <TR>\n" .
-            "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n" .
-            "            "._("Mailer").": \n".
-            "         </TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>\n" .
-            "            <B>$mailer</B>&nbsp;\n" .
-            "         </TD>" . "\n" .
-            "      </TR>" . "\n";
+        echo       '<TR>' .
+                     "<TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>" .
+                           _("Mailer") . ': '.
+                     "</TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>" .
+                        "<B>$mailer</B>&nbsp;" .
+                     '</TD>' .
+                  "</TR>" . "\n";
     }
 }
 
@@ -638,11 +784,165 @@ if (!$pf_subtle_link) {
     echo printer_friendly_link(true);
 }
 
-do_hook("read_body_header");
+if ($default_use_mdn) {
+    if ($mdn_user_support) {
+
+        // debug gives you the capability to remove mdn-flags
+        $debug = 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 ($debug ) {
+                    echo       '<TR>' .
+                                 "<TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>" .
+                                       _("Read receipt") . ': ' .
+                                 "</TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>" .
+                                    '<B>' .
+                                    _("send") .
+                                    "</B> <a href=$url>[" . _("Remove MDN flag") . ']  </a>'  .
+                                 '</TD>' .
+                             '</TR>' . "\n";
+                } else {
+                    echo       '<TR>' .
+                                 "<TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>" .
+                                       _("Read receipt") . ': ' .
+                                 "</TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>" .
+                                    '<B>'._("send").'</B>'.
+                                 '</TD>' .
+                             '</TR>' . "\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       '<TR>' .
+                            "<TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>" .
+                                _("Read receipt") . ': '.
+                            "</TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>" .
+                                '<B>' . _("requested") . "</B>" .
+                            '</TD>' .
+                        '</TR>' . "\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       '<TR>' .
+                            "<TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>" .
+                                _("Read receipt") . ': ' .
+                            "</TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>" .
+                                '<B>' . _("requested") .
+                                "</B> &nbsp; <a href=$url>[" . _("Send read receipt now") . "]</a>" .
+                            '</TD>' .
+                        '</TR>' . "\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 "<script language=\"javascript\">  \n" .
+                    '<!-- ' . "\n" .
+                    "               if (window.confirm(\"" .
+                    _("The message sender has requested a response to indicate that you have read this message. Would you like to send a receipt?") .
+                    "\")) {  \n" .
+                    "                       window.location=($url); \n" .
+                    '                       window.reload()' . "\n" .
+                    '               }' . "\n" .
+                    '// -->' . "\n" .
+                    '</script>' . "\n";
+                }
+                echo       '<TR>' .
+                            "<TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>" .
+                                    _("Read receipt") . ': ' .
+                            "</TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>" .
+                                '<B>' . _("requested") . "&nbsp&nbsp</B><a href=$url>" . '[' .
+                                _("Send read receipt now") . ']  </a>' ." \n" .
+                            '</TD>' .
+                            '</TR>' . "\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 ($debug && $supportMDN) {
+            echo "      <TR>\n" .
+                    "         <TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>\n" .
+                    "            "._("Read receipt").": \n".
+                    "         </TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>\n" .
+                    '            <B>'._("send").'</B>'." <a href=$url>" . '[' . _("Remove MDN flag") . ']  </a>'  . "\n" .
+                    '         </TD>' . "\n" .
+                    '     </TR>' . "\n";
+            } else {
+            echo "      <TR>\n" .
+                    "         <TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>\n" .
+                    "            "._("Read receipt").": \n".
+                    "         </TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>\n" .
+                    '            <B>'._("send").'</B>'. "\n" .
+                    '         </TD>' . "\n" .
+                    '     </TR>' . "\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       '<TR>'.
+                              "<TD BGCOLOR=\"$color[9]\"  ALIGN=RIGHT VALIGN=TOP>" .
+                                    _("Read receipt") . ': ' .
+                              "</TD><TD BGCOLOR=\"$color[9]\" VALIGN=TOP colspan=2>" .
+                                 '<B>' . _("requested") .
+                                 "</B> &nbsp; <a href=$url>[" . _("Send read receipt now") . "]</a>" .
+                              '</TD>' .
+                            '</TR>' . "\n";
+            $sendreceipt = '';
+
+        }
+    }
+}
+
+do_hook('read_body_header');
+
 echo '</TABLE>' .
     '   </TD></TR>' .
     '</TABLE>';
 flush();
+
 echo "<TABLE CELLSPACING=0 WIDTH=\"97%\" BORDER=0 ALIGN=CENTER CELLPADDING=0>\n" .
     "   <TR><TD BGCOLOR=\"$color[4]\" WIDTH=\"100%\">\n" .
     '<BR>'.
@@ -653,23 +953,29 @@ echo "<TABLE CELLSPACING=0 WIDTH=\"97%\" BORDER=0 ALIGN=CENTER CELLPADDING=0>\n"
     '</TABLE>' . "\n";
 
 /* show attached images inline -- if pref'fed so */
-if (($attachment_common_show_images) and
+if (($attachment_common_show_images) &&
     is_array($attachment_common_show_images_list)) {
+
     foreach ($attachment_common_show_images_list as $img) {
-        echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 ALIGN=CENTER>\n" .
-            "  <TR>\n" .
-            "    <TD>\n" .
-            '      <img src="../src/download.php' .
-                '?passed_id='     . urlencode($img['passed_id']) .
-                '&mailbox='       . urlencode($img['mailbox']) .
+        $imgurl = '../src/download.php' .
+                '?' .
+                'passed_id='     . urlencode($img['passed_id']) .
+                '&mailbox='       . urlencode($mailbox) .
                 '&passed_ent_id=' . urlencode($img['ent_id']) .
-                '&absolute_dl=true">' . "\n" .
-            "    </TD>\n" .
-            "  </TR>\n" .
+                '&absolute_dl=true';
+
+        echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 ALIGN=CENTER>\n" .
+              '<TR>' .
+                '<TD>' .
+                  "<img src=\"$imgurl\">\n" .
+                "</TD>\n" .
+              "</TR>\n" .
             "</TABLE>\n";
+
     }
 }
 
+
 do_hook('read_body_bottom');
 do_hook('html_bottom');
 sqimap_logout($imapConnection);