diff options
author | alecpl <alec@alec.pl> | 2010-05-20 07:10:42 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-05-20 07:10:42 +0000 |
commit | c1439f925dbfbd20566337a0251a6b4e85e9a2f9 (patch) | |
tree | f00ce8d3caf5f298825b6d1477fa6ad9d778a7d3 /program | |
parent | 7520f0781c651154217e9547d12d32a65439c5d2 (diff) |
- Fix message/rfc822 attachments containing only attachments are not parsed properly (#1486743)
Diffstat (limited to 'program')
-rw-r--r-- | program/include/rcube_message.php | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php index 8cb7b02ab..05b0151ef 100644 --- a/program/include/rcube_message.php +++ b/program/include/rcube_message.php @@ -393,7 +393,7 @@ class rcube_message // ignore "virtual" protocol parts else if ($primary_type == 'protocol') continue; - + // part is Microsoft Outlook TNEF (winmail.dat) else if ($part_mimetype == 'application/ms-tnef') { foreach ((array)$this->imap->tnef_decode($mail_part, $structure->headers['uid']) as $tnef_part) { @@ -401,7 +401,6 @@ class rcube_message $this->attachments[] = $tnef_part; } } - // part is a file/attachment else if (preg_match('/^(inline|attach)/', $mail_part->disposition) || $mail_part->headers['content-id'] || (empty($mail_part->disposition) && $mail_part->filename)) { @@ -418,9 +417,13 @@ class rcube_message $mail_part->content_id = preg_replace(array('/^</', '/>$/'), '', $mail_part->headers['content-id']); if ($mail_part->headers['content-location']) $mail_part->content_location = $mail_part->headers['content-base'] . $mail_part->headers['content-location']; - + $this->inline_parts[] = $mail_part; } + // attachment encapsulated within message/rfc822 part needs further decoding (#1486743) + else if ($part_orig_mimetype == 'message/rfc822') { + $this->parse_structure($mail_part, true); + } // is a regular attachment else if (preg_match('!^[a-z0-9-.+]+/[a-z0-9-.+]+$!i', $part_mimetype)) { if (!$mail_part->filename) |