nonbreaking spaces are frustrating the address parser because they do not
[squirrelmail.git] / src / compose.php
index e5d206b7de8ae573785cbb8e9985c408187c68c8..0afec44f433fa2b60b46dc2bbb38efb6ba71d416 100644 (file)
@@ -87,6 +87,9 @@ if ( sqgetGlobalVar('return', $temp, SQ_POST) ) {
 /** GET VARS */
 sqgetGlobalVar('attachedmessages', $attachedmessages, SQ_GET);
 
+/* Location (For HTTP 1.1 Header("Location: ...") redirects) */
+$location = get_location();
+
 /* --------------------- Specific Functions ------------------------------ */
 
 function replyAllString($header) {
@@ -300,17 +303,17 @@ if ($draft) {
         $draft_message = _("Draft Email Saved");
         /* If this is a resumed draft, then delete the original */
         if(isset($delete_draft)) {
-            Header("Location: delete_message.php?mailbox=" . urlencode($draft_folder) .
+            Header("Location: $location/delete_message.php?mailbox=" . urlencode($draft_folder) .
                    "&message=$delete_draft&sort=$sort&startMessage=1&saved_draft=yes");
             exit();
         }
         else {
             if ($compose_new_win == '1') {
-                Header("Location: compose.php?saved_draft=yes&session=$composesession");
+                Header("Location: $location/compose.php?saved_draft=yes&session=$composesession");
                 exit();
             }
             else {
-                Header("Location: right_main.php?mailbox=$draft_folder&sort=$sort".
+                Header("Location: $location/right_main.php?mailbox=$draft_folder&sort=$sort".
                        "&startMessage=1&note=".urlencode($draft_message));
                 exit();
             }
@@ -366,7 +369,7 @@ if ($send) {
            
         }
         $body = $newBody;
-        do_hook('compose_send');
+        
         $composeMessage=$compose_messages[$session];
 
         $Result = deliverMessage($composeMessage);
@@ -376,16 +379,16 @@ if ($send) {
         }
        unset($compose_messages[$session]);
         if ( isset($delete_draft)) {
-            Header("Location: delete_message.php?mailbox=" . urlencode( $draft_folder ).
+            Header("Location: $location/delete_message.php?mailbox=" . urlencode( $draft_folder ).
                    "&message=$delete_draft&sort=$sort&startMessage=1&mail_sent=yes");
             exit();
         }
         if ($compose_new_win == '1') {
 
-            Header("Location: compose.php?mail_sent=yes");
+            Header("Location: $location/compose.php?mail_sent=yes");
         }
         else {
-            Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort".
+            Header("Location: $location/right_main.php?mailbox=$urlMailbox&sort=$sort".
                    "&startMessage=1");
         }
     } else {
@@ -556,7 +559,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
            $use_signature, $composesession, $data_dir, $username,
            $username, $key, $imapServerAddress, $imapPort, $compose_messages,
            $composeMessage;
-       global $languages, $squirrelmail_language;
+    global $languages, $squirrelmail_language;
 
     $send_to = $send_to_cc = $send_to_bcc = $subject = $identity = '';
     $mailprio = 3;
@@ -691,7 +694,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
         case ('forward'):
             $send_to = '';
             $subject = decodeHeader($orig_header->subject,false,true);
-           if ((substr(strtolower($subject), 0, 4) != 'fwd:') &&
+            if ((substr(strtolower($subject), 0, 4) != 'fwd:') &&
                 (substr(strtolower($subject), 0, 5) != '[fwd:') &&
                 (substr(strtolower($subject), 0, 6) != '[ fwd:')) {
                 $subject = '[Fwd: ' . $subject . ']';
@@ -941,6 +944,7 @@ function showInputForm ($session, $values=false) {
                 echo htmlspecialchars($em) . "\n";
             }
         }
+        echo '</option>';
         for ($i = 1; $i < $idents; $i ++) {
             $fn = getPref($data_dir, $username, 'full_name' . $i);
             $em = getPref($data_dir, $username, 'email_address' . $i);
@@ -1333,6 +1337,15 @@ function deliverMessage($composeMessage, $draft=false) {
            $domain, $action, $default_move_to_sent, $move_to_sent;
     global $imapServerAddress, $imapPort, $sent_folder, $key;
 
+    /* some browsers replace <space> by nonbreaking spaces &nbsp;
+       by replacing them back to spaces addressparsing works */
+    /* FIXME: How to handle in case of other charsets where "\240"
+       is not a non breaking space ??? */
+        
+    $send_to = str_replace("\240",' ',$send_to);
+    $send_to_cc = str_replace("\240",' ',$send_to_cc);
+    $send_to_bcc = str_replace("\240",' ',$send_to_bcc);
+
     $rfc822_header = $composeMessage->rfc822_header;
 
     $abook = addressbook_init(false, true);
@@ -1371,7 +1384,6 @@ function deliverMessage($composeMessage, $draft=false) {
     }
     if (!$from_mail) {
        $from_mail = "$popuser@$domain";
-       $full_name = '';
     }
     $rfc822_header->from = $rfc822_header->parseAddress($from_mail,true);
     if ($full_name) {
@@ -1429,6 +1441,10 @@ function deliverMessage($composeMessage, $draft=false) {
         
     $rfc822_header->content_type = $content_type;
     $composeMessage->rfc822_header = $rfc822_header;
+    
+    /* Here you can modify the message structure just before we hand 
+       it over to deliver */
+    do_hook('compose_send');
 
     if (!$useSendmail && !$draft) {
         require_once(SM_PATH . 'class/deliver/Deliver_SMTP.class.php');