Index: sandbox/2.5.0-expresso1/expressoMail1_2/inc/class.imap_functions.inc.php
===================================================================
--- sandbox/2.5.0-expresso1/expressoMail1_2/inc/class.imap_functions.inc.php	(revision 7331)
+++ sandbox/2.5.0-expresso1/expressoMail1_2/inc/class.imap_functions.inc.php	(revision 7352)
@@ -4612,5 +4612,5 @@
 
     function insert_email($source,$folder,$timestamp,$flags){
-		
+
         $username = $_SESSION['phpgw_info']['expressomail']['user']['userid'];
         $password = $_SESSION['phpgw_info']['expressomail']['user']['passwd'];
@@ -4619,25 +4619,39 @@
         $imap_options = '/notls/novalidate-cert';
 
-	
         $folder = mb_convert_encoding( $folder, "UTF7-IMAP","ISO-8859-1");
-
         $mbox_stream = imap_open("{".$imap_server.":".$imap_port.$imap_options."}".$folder, $username, $password);
         
         if(imap_last_error() === 'Mailbox already exists')
             imap_createmailbox($mbox_stream,imap_utf7_encode("{".$imap_server."}".$folder));
+
         if($timestamp){
-			$pdate = date_parse(date('r')); // pega a data atual do servidor (TODO: pegar a data da mensagem local) 
-			$timestamp += $pdate['zone']*(60); //converte a data da mensagem para o fuso horário GMT 0. Isto é feito devido ao Expresso Mail armazenar a data no fuso horário GMT 0 e para exibi-la converte ela para o fuso horário local. 
-			/* TODO: o diretorio /tmp deve ser substituido pelo diretorio temporario configurado no setup */ 
-			$file = "/tmp/sess_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]; 
-		
-    		$f = fopen($file,"w");
-        	fputs($f,base64_encode($source));
-            fclose($f);
-            $command = "python ".dirname(__FILE__)."/../imap.py \"$imap_server\" \"$imap_port\" \"$username\" \"$password\" \"$timestamp\" \"$folder\" \"$file\"";
-            $return['command']= exec($command);
+            if(version_compare(PHP_VERSION, '5.3.2', '>=')){
+                $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"), $source,'',date('d-M-Y H:i:s O',$timestamp));
+            }else{
+				$pdate = date_parse(date('r')); // pega a data atual do servidor (TODO: pegar a data da mensagem local) 
+				$timestamp += $pdate['zone']*(60); //converte a data da mensagem para o fuso horário GMT 0. Isto é feito devido ao Expresso Mail armazenar a data no fuso horário GMT 0 e para exibi-la converte ela para o fuso horário local. 
+				/* TODO: o diretorio /tmp deve ser substituido pelo diretorio temporario configurado no setup */ 
+				$file = "/tmp/sess_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]; 
+			
+	    		$f = fopen($file,"w");
+	        	fputs($f,base64_encode($source));
+	            fclose($f);
+	            $command = "python ".dirname(__FILE__)."/../imap.py \"$imap_server\" \"$imap_port\" \"$username\" \"$password\" \"$timestamp\" \"$folder\" \"$file\"";
+	            $return['command']= exec($command);
+	        }
         }else{
             $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".$folder, $source, "\\Seen");
         }
+
+        if (!empty($return['command']))
+        {
+            list ($result, $msg) = explode(':',$return['command']);
+            if (strtoupper($result) === 'NO')
+            {
+                $return['error'] = $msg;
+                return $return;
+            }
+        }
+
         $status = imap_status($mbox_stream, "{".$this->imap_server.":".$this->imap_port."}".$folder, SA_UIDNEXT);
 			
@@ -4665,5 +4679,5 @@
 			    $flags_fixed.="\\Answered \\Draft ";
 			imap_setflag_full($mbox_stream, $return['msg_no'], $flags_fixed, ST_UID);
-        }
+		}
 	
         //Ignorando erro de AUTH=Plain
@@ -4730,25 +4744,29 @@
 
     function treat_base64_from_post($source){
-            $offset = 0;
-            do
+    	//Marcosw inicio - Necessário alterar a forma com que é tratada a quebra de linha do fonte da mensagem, caso contrário a mensagem não será desarquivada.
+    	$source = preg_replace('/(?<!\r)\n/', "\r\n", $source);
+    	//Marcosw fim
+
+        $offset = 0;
+        do
+        {
+            if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset))
             {
-                    if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset))
-                    {
-                            $inicio = strpos($source, "\n\r", $inicio);
-                            $fim = strpos($source, '--', $inicio);
-                            if(!$fim)
-                                    $fim = strpos($source,"\n\r", $inicio);
-                            $length = $fim-$inicio;
-                            $parte = substr( $source,$inicio,$length-1);
-                            $parte = str_replace(" ", "+", $parte);
-                            $source = substr_replace($source, $parte, $inicio, $length-1);
-                    }
-                    if($offset > $inicio)
-                    $offset=FALSE;
-                    else
-                    $offset = $inicio;
+                    $inicio = strpos($source, "\n\r", $inicio);
+                    $fim = strpos($source, '--', $inicio);
+                    if(!$fim)
+                            $fim = strpos($source,"\n\r", $inicio);
+                    $length = $fim-$inicio;
+                    $parte = substr( $source,$inicio,$length-1);
+                    $parte = str_replace(" ", "+", $parte);
+                    $source = substr_replace($source, $parte, $inicio, $length-1);
             }
-            while($offset);
-            return $source;
+            if($offset > $inicio)
+            $offset=FALSE;
+            else
+            $offset = $inicio;
+        }
+        while($offset);
+        return $source;
     }
 
@@ -4779,4 +4797,5 @@
 
 		 		$source = $this->treat_base64_from_post($sourcedec);
+
 				$insert = $this->insert_email($source,$dest_folder,$timestamps[$index],$flags[$index]);
 
