New function: sqimap_create_stream(). Returns an IMAP stream.
[squirrelmail.git] / src / read_body.php
index 22835df5e563f4f2eb228b0411d6b7112c682bdb..cb6c5614f7ce5f8dc80ec2c76cbc1fc9ca0aeaea 100644 (file)
@@ -25,6 +25,7 @@ require_once(SM_PATH . 'functions/url_parser.php');
 require_once(SM_PATH . 'functions/html.php');
 require_once(SM_PATH . 'functions/global.php');
 require_once(SM_PATH . 'functions/identity.php');
+require_once(SM_PATH . 'functions/mailbox_display.php');
 
 /**
  * Given an IMAP message id number, this will look it up in the cached
@@ -168,6 +169,16 @@ function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
     $rfc822_header->to[] = $header->dnt;
     $rfc822_header->subject = _("Read:") . ' ' . encodeHeader($header->subject);
 
+    // Patch #793504 Return Receipt Failing with <@> from Tim Craig (burny_md)
+    // This merely comes from compose.php and only happens when there is no
+    // email_addr specified in user's identity (which is the startup config)
+    if (ereg("^([^@%/]+)[@%/](.+)$", $username, $usernamedata)) {
+       $popuser = $usernamedata[1];
+       $domain  = $usernamedata[2];
+       unset($usernamedata);
+    } else {
+       $popuser = $username;
+    }
 
     $reply_to = '';
     $ident = get_identities();
@@ -177,9 +188,9 @@ function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
     $from_addr = '"'.$full_name.'" <'.$from_mail.'>';
     $reply_to  = $ident[$identity]['reply_to'];
 
-    if (!$from_addr) {
-       $from_addr = "$popuser@$domain";
-       $from_mail = $from_addr;
+    if (!$from_mail) {
+       $from_mail = "$popuser@$domain";
+       $from_addr = $from_mail;
     }
     $rfc822_header->from = $rfc822_header->parseAddress($from_addr,true);
     if ($reply_to) {
@@ -393,14 +404,14 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
     $header = $message->rfc822_header;
     $env = array();
     $env[_("Subject")] = str_replace("&nbsp;"," ",decodeHeader($header->subject));
+
     $from_name = $header->getAddr_s('from');
-    if (!$from_name) {
+    if (!$from_name)
         $from_name = $header->getAddr_s('sender');
-        if (!$from_name) {
-            $from_name = _("Unknown sender");
-        }
-    }
-    $env[_("From")] = decodeHeader($from_name);
+    if (!$from_name)
+        $env[_("From")] = _("Unknown sender");
+    else
+        $env[_("From")] = decodeHeader($from_name);
     $env[_("Date")] = getLongDateString($header->date);
     $env[_("To")] = formatRecipientString($header->to, "to");
     $env[_("Cc")] = formatRecipientString($header->cc, "cc");
@@ -730,16 +741,11 @@ do_hook('html_top');
 
 if (isset($sendreceipt)) {
    if ( !$message->is_mdnsent ) {
-      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', '' );
-      }
+      $final_recipient = '';
+      if ((isset($identity)) && ($identity != 0))      //Main identity
+         $final_recipient = trim(getPref($data_dir, $username, 'email_address' . $identity, '' ));
+      if ($final_recipient == '' )
+         $final_recipient = trim(getPref($data_dir, $username, 'email_address', '' ));
       $supportMDN = ServerMDNSupport($mbx_response["PERMANENTFLAGS"]);
       if ( SendMDN( $mailbox, $passed_id, $final_recipient, $message, $imapConnection ) > 0 && $supportMDN ) {
          ToggleMDNflag( true, $imapConnection, $mailbox, $passed_id, $uid_support);