From 8757f5b57d886a0ae6c79b54c4f37e3d7d9b6b4e Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 30 Aug 2011 05:10:27 -0400
Subject: [PATCH] - Fix handling of attachments inside message/rfc822 parts (#1488026)

---
 CHANGELOG                         |    1 +
 program/include/rcube_message.php |   12 ++++++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 49c1c29..24a6029 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix handling of attachments inside message/rfc822 parts (#1488026)
 - Make list of mimetypes that open in preview window configurable (#1487625)
 - Added plugin hook 'message_part_get' for attachment downloads
 - Localize forwarded message header (#1488058)
diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php
index 4f9a2f2..4e25955 100644
--- a/program/include/rcube_message.php
+++ b/program/include/rcube_message.php
@@ -286,7 +286,7 @@
         if ($message_ctype_primary == 'text' && !$recursive) {
             $structure->type = 'content';
             $this->parts[] = &$structure;
-            
+
             // Parse simple (plain text) message body
             if ($message_ctype_secondary == 'plain')
                 foreach ((array)$this->uu_decode($structure) as $uupart) {
@@ -306,7 +306,7 @@
 
             foreach ($structure->parts as $p => $sub_part) {
                 $sub_mimetype = $sub_part->mimetype;
-        
+
                 // check if sub part is
                 if ($sub_mimetype == 'text/plain')
                     $plain_part = $p;
@@ -323,7 +323,7 @@
                 $this->parse_alternative = true;
                 $this->parse_structure($structure->parts[$related_part], true);
                 $this->parse_alternative = false;
-        
+
                 // if plain part was found, we should unset it if html is preferred
                 if ($this->opt['prefer_html'] && count($this->parts))
                     $plain_part = null;
@@ -432,7 +432,7 @@
                         $this->attachments[] = $mail_part;
                 }
                 // part message/*
-                else if ($primary_type=='message') {
+                else if ($primary_type == 'message') {
                     $this->parse_structure($mail_part, true);
 
                     // list as attachment as well (mostly .eml)
@@ -496,6 +496,10 @@
                         $this->attachments[] = $mail_part;
                     }
                 }
+                // attachment part as message/rfc822 (#1488026)
+                else if ($mail_part->mimetype == 'message/rfc822') {
+                    $this->parse_structure($mail_part);
+                }
             }
 
             // if this was a related part try to resolve references

--
Gitblit v1.9.1