Explorar o código

* modifications for using ent_id=0 for downloading full messages
* patch from Seth E. Randall for setting the filename of the mime-entities

stekkel %!s(int64=22) %!d(string=hai) anos
pai
achega
5251308c7f
Modificáronse 1 ficheiros con 21 adicións e 10 borrados
  1. 21 10
      src/download.php

+ 21 - 10
src/download.php

@@ -50,18 +50,26 @@ if (!is_object($message)) {
     $message = sqimap_get_message($imapConnection,$passed_id, $mailbox);
     $message = sqimap_get_message($imapConnection,$passed_id, $mailbox);
 }
 }
 $subject = $message->rfc822_header->subject;
 $subject = $message->rfc822_header->subject;
-$message = &$message->getEntity($ent_id);
-$header = $message->header;
-if ($message->rfc822_header) {
-   $subject = $message->rfc822_header->subject;
-   $charset = $header->content_type->properties['charset'];
+if ($ent_id) {
+    $message = &$message->getEntity($ent_id);
+    $header = $message->header;
+    
+    if ($message->rfc822_header) {
+       $subject = $message->rfc822_header->subject;
+       $charset = $header->content_type->properties['charset'];
+    } else {
+       $header = $message->header;
+       $charset = $header->getParameter('charset');
+    }
+    $type0 = $header->type0;
+    $type1 = $header->type1;
+    $encoding = strtolower($header->encoding);
 } else {
 } else {
-   $header = $message->header;
-   $charset = $header->getParameter('charset');
+    /* raw message */
+    $type0 = 'message';
+    $type1 = 'rfc822';
+    $encoding = "US-ASCII";
 }
 }
-$type0 = $header->type0;
-$type1 = $header->type1;
-$encoding = strtolower($header->encoding);
 
 
 /*
 /*
  * lets redefine message as this particular entity that we wish to display.
  * lets redefine message as this particular entity that we wish to display.
@@ -81,6 +89,9 @@ if (is_object($message->header->disposition)) {
     if (!$filename) {
     if (!$filename) {
 	$filename = decodeHeader($header->disposition->getProperty('name'));
 	$filename = decodeHeader($header->disposition->getProperty('name'));
     }
     }
+    if (!$filename) {
+        $filename = decodeHeader($header->getParameter('name'));
+    }    
 }
 }
 if (strlen($filename) < 1) {
 if (strlen($filename) < 1) {
     if ($type1 == 'plain' && $type0 == 'text') {
     if ($type1 == 'plain' && $type0 == 'text') {