X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fread_body.php;h=a8eb3056dbd9c4af770d8f7fd0bcef07a9d8a16b;hp=8d647a54879d6c17595d509cc1b6798329b712c4;hb=ad15d68754bb9d2c5b594da2445f0b9d88a4f0e1;hpb=5dd6c4d7b35ccb12d93f3785366eba67f691c9e9
diff --git a/src/read_body.php b/src/read_body.php
index 8d647a54..a8eb3056 100644
--- a/src/read_body.php
+++ b/src/read_body.php
@@ -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 = '
' . "\n" .
- ' ' . "\n" .
- ' ' . "\n" .
- ' | '."\n";
+ $result = ' |
' .
+ '' .
+ ' ' .
+ ' | '."\n";
} else {
/* The link is subtle, below "view full header". */
$result = " \n";
@@ -130,22 +132,165 @@ function printer_friendly_link() {
if (!$pf_subtle_link) {
/* The link is large, on the bottom of the header panel. */
- $result .= ' | ' . "\n" .
- '
' . "\n";
+ $result .= '' . "\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) ) {
+ $ret = preg_match( '/.*PERMANENTFLAGS.*(MDNSent|\\\*).*/i', $read[$num] );
+ /*
+ 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;
+
+ $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 );
+/*
+ $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 +304,9 @@ if (isset($view_hdr)) {
} else {
echo "&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more\">";
}
- echo ''._("View message") . "\n" .
- "\n" .
- '';
+ echo _("View message") . " |
\n" .
+ "\n" .
+ '';
$cnum = 0;
for ($i=1; $i < count($read); $i++) {
@@ -197,8 +342,8 @@ if (isset($view_hdr)) {
parseEmail($s);
if (isset($f)) echo "$f$s";
}
- echo " |
\n";
- echo '