|
|
|
@ -596,15 +596,32 @@ function rcmail_prepare_message_body()
|
|
|
|
|
}
|
|
|
|
|
// reply/edit/draft/forward
|
|
|
|
|
else if ($compose_mode && ($compose_mode != RCUBE_COMPOSE_REPLY || intval($RCMAIL->config->get('reply_mode')) != -1)) {
|
|
|
|
|
$isHtml = rcmail_compose_editor_mode();
|
|
|
|
|
$isHtml = rcmail_compose_editor_mode();
|
|
|
|
|
$messages = array();
|
|
|
|
|
|
|
|
|
|
if (!empty($MESSAGE->parts)) {
|
|
|
|
|
// collect IDs of message/rfc822 parts
|
|
|
|
|
if ($compose_mode == RCUBE_COMPOSE_EDIT || $compose_mode == RCUBE_COMPOSE_DRAFT) {
|
|
|
|
|
foreach ($MESSAGE->attachments as $part) {
|
|
|
|
|
if ($part->mimetype == 'message/rfc822') {
|
|
|
|
|
$messages[] = $part->mime_id;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($MESSAGE->parts as $part) {
|
|
|
|
|
// skip no-content and attachment parts (#1488557)
|
|
|
|
|
if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// skip all content parts inside the message/rfc822 part in DRAFT/EDIT mode
|
|
|
|
|
foreach ($messages as $mimeid) {
|
|
|
|
|
if (strpos($part->mime_id, $mimeid . '.') === 0) {
|
|
|
|
|
continue 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($part_body = rcmail_compose_part_body($part, $isHtml)) {
|
|
|
|
|
$body .= ($body ? ($isHtml ? '<br/>' : "\n") : '') . $part_body;
|
|
|
|
|
}
|
|
|
|
@ -1021,7 +1038,9 @@ function rcmail_write_compose_attachments(&$message, $bodyIsHtml)
|
|
|
|
|
$loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$cid_map = $messages = array();
|
|
|
|
|
$cid_map = array();
|
|
|
|
|
$messages = array();
|
|
|
|
|
|
|
|
|
|
foreach ((array)$message->mime_parts as $pid => $part)
|
|
|
|
|
{
|
|
|
|
|
if ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) {
|
|
|
|
@ -1033,25 +1052,32 @@ function rcmail_write_compose_attachments(&$message, $bodyIsHtml)
|
|
|
|
|
if ($part->ctype_primary == 'message' && $compose_mode == RCUBE_COMPOSE_REPLY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// skip inline images when forwarding
|
|
|
|
|
if ($part->content_id && $part->disposition == 'inline' && $compose_mode == RCUBE_COMPOSE_FORWARD) {
|
|
|
|
|
// skip inline images when forwarding in text mode
|
|
|
|
|
if ($part->content_id && $part->disposition == 'inline' && !$bodyIsHtml && $compose_mode == RCUBE_COMPOSE_FORWARD) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$skip = false;
|
|
|
|
|
// skip message/rfc822 attachments on forwards (#1489214)
|
|
|
|
|
// Thunderbird when forwarding in inline mode displays such attachments
|
|
|
|
|
// and skips any attachments from inside of such part, this however
|
|
|
|
|
// skipped e.g. images used in HTML body or other attachments. So,
|
|
|
|
|
// better to skip .eml attachments but not their content (included files).
|
|
|
|
|
if ($part->mimetype == 'message/rfc822') {
|
|
|
|
|
if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$messages[] = $part->mime_id;
|
|
|
|
|
} else if ($messages) {
|
|
|
|
|
}
|
|
|
|
|
else if ($compose_mode != RCUBE_COMPOSE_FORWARD) {
|
|
|
|
|
// skip attachments included in message/rfc822 attachment (#1486487)
|
|
|
|
|
foreach ($messages as $mimeid)
|
|
|
|
|
if (strpos($part->mime_id, $mimeid.'.') === 0) {
|
|
|
|
|
$skip = true;
|
|
|
|
|
break;
|
|
|
|
|
if (strpos($part->mime_id, $mimeid . '.') === 0) {
|
|
|
|
|
continue 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$skip && (($attachment = $loaded_attachments[rcmail_attachment_name($part) . $part->mimetype])
|
|
|
|
|
|| ($attachment = rcmail_save_attachment($message, $pid)))) {
|
|
|
|
|
if (($attachment = $loaded_attachments[rcmail_attachment_name($part) . $part->mimetype])
|
|
|
|
|
|| ($attachment = rcmail_save_attachment($message, $pid))) {
|
|
|
|
|
$COMPOSE['attachments'][$attachment['id']] = $attachment;
|
|
|
|
|
if ($bodyIsHtml && ($part->content_id || $part->content_location)) {
|
|
|
|
|
$url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
|
|
|
|
|