summaryrefslogtreecommitdiff
path: root/program/steps/mail/compose.inc
diff options
context:
space:
mode:
Diffstat (limited to 'program/steps/mail/compose.inc')
-rw-r--r--program/steps/mail/compose.inc55
1 files changed, 38 insertions, 17 deletions
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 92296e525..db4efc7ce 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -53,13 +53,14 @@ if (!is_array($COMPOSE)) {
}
$COMPOSE_ID = uniqid(mt_rand());
+ $params = rcube_utils::request2param(rcube_utils::INPUT_GET, 'task|action', true);
+
$_SESSION['compose_data_'.$COMPOSE_ID] = array(
'id' => $COMPOSE_ID,
- 'param' => rcube_utils::request2param(rcube_utils::INPUT_GET, 'task|action', true),
- 'mailbox' => $RCMAIL->storage->get_folder(),
+ 'param' => $params,
+ 'mailbox' => $params['mbox'] ?: $RCMAIL->storage->get_folder(),
);
$COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
-
rcmail_process_compose_params($COMPOSE);
// check if folder for saving sent messages exists and is subscribed (#1486802)
@@ -322,13 +323,18 @@ foreach ($parts as $header) {
$fvalue = $mailfollowup;
else if ($mailreplyto)
$fvalue = $mailreplyto;
- else if (!empty($MESSAGE->headers->replyto))
- $fvalue = $MESSAGE->headers->replyto;
+ else if (!empty($MESSAGE->headers->replyto)) {
+ $fvalue = $MESSAGE->headers->replyto;
+ $replyto = true;
+ }
else if (!empty($MESSAGE->headers->from))
$fvalue = $MESSAGE->headers->from;
// Reply to message sent by yourself (#1487074, #1489230)
- if (!empty($ident) && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))) {
+ // Reply-To address need to be unset (#1490233)
+ if (!empty($ident) && empty($replyto)
+ && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))
+ ) {
$fvalue = $MESSAGE->headers->to;
}
}
@@ -419,7 +425,8 @@ $OUTPUT->add_handlers(array(
'filedroparea' => 'compose_file_drop_area',
'priorityselector' => 'rcmail_priority_selector',
'editorselector' => 'rcmail_editor_selector',
- 'receiptcheckbox' => 'rcmail_receipt_checkbox',
+ 'receiptcheckbox' => 'rcmail_mdn_checkbox', // deprecated
+ 'mdncheckbox' => 'rcmail_mdn_checkbox',
'dsncheckbox' => 'rcmail_dsn_checkbox',
'storetarget' => 'rcmail_store_target_selection',
'addressbooks' => 'rcmail_addressbook_list',
@@ -780,12 +787,13 @@ function rcmail_prepare_message_body()
unset($plugin);
// add blocked.gif attachment (#1486516)
- if ($isHtml && preg_match('#<img src="\./program/resources/blocked\.gif"#', $body)) {
- if ($attachment = rcmail_save_image('program/resources/blocked.gif', 'image/gif')) {
+ if ($isHtml && preg_match('#<img src="program/resources/blocked\.gif"#', $body)) {
+ $content = $RCMAIL->get_resource_content('blocked.gif');
+ if ($content && ($attachment = rcmail_save_image('blocked.gif', 'image/gif', $content))) {
$COMPOSE['attachments'][$attachment['id']] = $attachment;
$url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
$RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
- $body = preg_replace('#\./program/resources/blocked\.gif#', $url, $body);
+ $body = preg_replace('#program/resources/blocked\.gif#', $url, $body);
}
}
@@ -1399,18 +1407,31 @@ function rcmail_save_attachment(&$message, $pid)
return false;
}
-function rcmail_save_image($path, $mimetype='')
+function rcmail_save_image($path, $mimetype = '', $data = null)
{
global $COMPOSE;
// handle attachments in memory
- $data = file_get_contents($path);
+ if (empty($data)) {
+ $data = file_get_contents($path);
+ $is_file = true;
+ }
+
$name = rcmail_basename($path);
+ if (empty($mimetype)) {
+ if ($is_file) {
+ $mimetype = rcube_mime::file_content_type($path, $name);
+ }
+ else {
+ $mimetype = rcube_mime::file_content_type($data, $name, 'application/octet-stream', true);
+ }
+ }
+
$attachment = array(
'group' => $COMPOSE['id'],
'name' => $name,
- 'mimetype' => $mimetype ? $mimetype : rcube_mime::file_content_type($path, $name),
+ 'mimetype' => $mimetype,
'data' => $data,
'size' => strlen($data),
);
@@ -1642,7 +1663,7 @@ function rcmail_priority_selector($attrib)
}
-function rcmail_receipt_checkbox($attrib)
+function rcmail_mdn_checkbox($attrib)
{
global $RCMAIL, $MESSAGE, $compose_mode;
@@ -1652,13 +1673,13 @@ function rcmail_receipt_checkbox($attrib)
if (!isset($attrib['id']))
$attrib['id'] = 'receipt';
- $attrib['name'] = '_receipt';
+ $attrib['name'] = '_mdn';
$attrib['value'] = '1';
$checkbox = new html_checkbox($attrib);
- if (isset($_POST['_receipt']))
- $mdn_default = $_POST['_receipt'];
+ if (isset($_POST['_mdn']))
+ $mdn_default = $_POST['_mdn'];
else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
$mdn_default = (bool) $MESSAGE->headers->mdn_to;
else