| | |
| | | |
| | | // part body not fetched yet... save in memory if it's small enough |
| | | if ($part->body === null && is_numeric($mime_id) && $part->size < self::BODY_MAX_SIZE) { |
| | | $this->storage->set_folder($this->folder); |
| | | // Warning: body here should be always unformatted |
| | | $part->body = $this->storage->get_message_part($this->uid, $mime_id, $part, |
| | | null, null, true, 0, false); |
| | |
| | | $this->storage->set_folder($this->folder); |
| | | |
| | | $body = $this->storage->get_message_part($this->uid, $mime_id, $part, |
| | | $mode === -1, is_resource($mode) ? $mode : null, !$formatted, $max_bytes, $formatted); |
| | | |
| | | if (!$mode && $body && $formatted) { |
| | | $body = self::format_part_body($body, $part, $this->headers->charset); |
| | | } |
| | | $mode === -1, is_resource($mode) ? $mode : null, |
| | | !($mode && $formatted), $max_bytes, $mode && $formatted); |
| | | |
| | | if (is_resource($mode)) { |
| | | rewind($mode); |
| | | return $body !== false; |
| | | } |
| | | |
| | | if (!$mode && $body && $formatted) { |
| | | $body = self::format_part_body($body, $part, $this->headers->charset); |
| | | } |
| | | |
| | | return $body; |
| | |
| | | else if ($mimetype == 'multipart/alternative' |
| | | && is_array($structure->parts) && count($structure->parts) > 1 |
| | | ) { |
| | | $plain_part = null; |
| | | $html_part = null; |
| | | $print_part = null; |
| | | $related_part = null; |
| | | $attach_part = null; |
| | | |
| | | // get html/plaintext parts, other add to attachments list |
| | | foreach ($structure->parts as $p => $sub_part) { |
| | | $sub_mimetype = $sub_part->mimetype; |
| | |
| | | $p->ctype_secondary = 'plain'; |
| | | $p->mimetype = 'text/plain'; |
| | | $p->realtype = 'multipart/encrypted'; |
| | | $p->mime_id = $structure->mime_id; |
| | | |
| | | $this->parts[] = $p; |
| | | |
| | | // add encrypted payload part as attachment |
| | | if (is_array($structure->parts)) { |
| | | for ($i=0; $i < count($structure->parts); $i++) { |
| | | $subpart = $structure->parts[$i]; |
| | | if ($subpart->mimetype == 'application/octet-stream' || !empty($subpart->filename)) { |
| | | $this->attachments[] = $subpart; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // this is an S/MIME ecrypted message -> create a plaintext body with the according message |
| | | else if ($mimetype == 'application/pkcs7-mime') { |
| | |
| | | $p->ctype_secondary = 'plain'; |
| | | $p->mimetype = 'text/plain'; |
| | | $p->realtype = 'application/pkcs7-mime'; |
| | | $p->mime_id = $structure->mime_id; |
| | | |
| | | $this->parts[] = $p; |
| | | |
| | | if (!empty($structure->filename)) { |
| | | $this->attachments[] = $structure; |
| | | } |
| | | } |
| | | // message contains multiple parts |
| | | else if (is_array($structure->parts) && !empty($structure->parts)) { |
| | |
| | | { |
| | | // @TODO: attachment may be huge, handle body via file |
| | | $body = $this->get_part_body($part->mime_id); |
| | | $tnef = new tnef_decoder; |
| | | $tnef = new rcube_tnef_decoder; |
| | | $tnef_arr = $tnef->decompress($body); |
| | | $parts = array(); |
| | | |