| | |
| | | } |
| | | |
| | | $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) |
| | |
| | | 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'uploadingmany', |
| | | 'fileuploaderror', 'sendmessage', 'newresponse', 'responsename', 'responsetext', 'save', |
| | | 'savingresponse', 'restoresavedcomposedata', 'restoremessage', 'delete', 'restore', 'ignore', |
| | | 'selectimportfile'); |
| | | 'selectimportfile', 'messageissent'); |
| | | |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('compose')); |
| | | |
| | |
| | | $OUTPUT->set_env('top_posting', intval($RCMAIL->config->get('reply_mode')) > 0); |
| | | $OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ','))); |
| | | $OUTPUT->set_env('save_localstorage', (bool)$RCMAIL->config->get('compose_save_localstorage')); |
| | | $OUTPUT->set_env('is_sent', false); |
| | | |
| | | $drafts_mbox = $RCMAIL->config->get('drafts_mbox'); |
| | | $config_show_sig = $RCMAIL->config->get('show_sig', 1); |
| | |
| | | $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; |
| | | } |
| | | } |
| | |
| | | |
| | | // #1486037: remove "mailto:" prefix |
| | | $COMPOSE['param']['to'] = preg_replace('/^mailto:/i', '', $mailto[0]); |
| | | // #1490346: decode the recipient address |
| | | $COMPOSE['param']['to'] = urldecode($COMPOSE['param']['to']); |
| | | |
| | | // Supported case-insensitive tokens in mailto URL |
| | | $url_tokens = array('to', 'cc', 'bcc', 'reply-to', 'in-reply-to', 'references', 'subject', 'body'); |
| | |
| | | $text = $html = $sql_arr['signature']; |
| | | |
| | | if ($sql_arr['html_signature']) { |
| | | $h2t = new rcube_html2text($sql_arr['signature'], false, true); |
| | | $h2t = new rcube_html2text($html, false, true); |
| | | $text = trim($h2t->get_text()); |
| | | } |
| | | else { |
| | | $html = htmlentities($html, ENT_NOQUOTES, RCUBE_CHARSET); |
| | | $t2h = new rcube_text2html($text, false); |
| | | $html = $t2h->get_html(); |
| | | } |
| | | |
| | | if (!preg_match('/^--[ -]\r?\n/m', $text)) { |
| | | $text = $separator . "\n" . $text; |
| | | $html = $separator . "<br>" . $html; |
| | | } |
| | | |
| | | if (!$sql_arr['html_signature']) { |
| | | $t2h = new rcube_text2html($sql_arr['signature'], false); |
| | | $html = $t2h->get_html(); |
| | | } |
| | | |
| | | $a_signatures[$identity_id]['text'] = $text; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | 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), |
| | | ); |