Handle multiline headers (thanks to Christian Schmidt)
authorsimond <simond@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 21 Mar 2002 18:21:25 +0000 (18:21 +0000)
committersimond <simond@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 21 Mar 2002 18:21:25 +0000 (18:21 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@2620 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/imap_messages.php

index 710f6b11aa4426936ba360645fd675795db449f8..acb046089fbf4f79ac17d31019560f5422138976 100755 (executable)
@@ -175,7 +175,13 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list, $issent) {
         $inrepto = "";
         $read = $read_list[$msgi];
 
+        $prevline = false;
         foreach ($read as $read_part) {
+            //unfold multi-line headers
+            while ($prevline && strspn($read_part, "\t ") > 0) {
+               $read_part = substr($prevline, 0, -2) . $read_part;
+            }
+            $prevline = $read_part;
             if (eregi ("^to:(.*)$", $read_part, $regs)) {
                 $to = $regs[1];
             } else if (eregi ("^from:(.*)$", $read_part, $regs)) {
@@ -329,6 +335,12 @@ function sqimap_get_header ($imap_stream, $read) {
     $hdr->charset = "us-ascii";
 
     while ($i < count($read)) {
+        //unfold multi-line headers
+        while ($i + 1 < count($read) && strspn($read[$i + 1], "\t ") > 0) {
+            $read[$i + 1] = substr($read[$i], 0, -2) . $read[$i + 1];
+            array_splice($read, $i, 1);
+        }
+
         if (substr($read[$i], 0, 17) == "MIME-Version: 1.0") {
             $hdr->mime = true;
             $i++;