diff options
Diffstat (limited to 'program/steps/mail')
-rw-r--r-- | program/steps/mail/compose.inc | 4 | ||||
-rw-r--r-- | program/steps/mail/func.inc | 70 | ||||
-rw-r--r-- | program/steps/mail/sendmail.inc | 2 |
3 files changed, 5 insertions, 71 deletions
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index d07cf587f..379e920e5 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -470,7 +470,7 @@ function rcmail_compose_header_from($attrib) $text = $html = $sql_arr['signature']; if ($sql_arr['html_signature']) { - $h2t = new html2text($sql_arr['signature'], false, false); + $h2t = new rcube_html2text($sql_arr['signature'], false, false); $text = trim($h2t->get_text()); } else { @@ -667,7 +667,7 @@ function rcmail_compose_part_body($part, $isHtml = false) // use html part if it has been used for message (pre)viewing // decrease line length for quoting $len = $compose_mode == RCUBE_COMPOSE_REPLY ? $LINE_LENGTH-2 : $LINE_LENGTH; - $txt = new html2text($body, false, true, $len); + $txt = new rcube_html2text($body, false, true, $len); $body = $txt->get_text(); } else if ($part->ctype_secondary == 'enriched') { diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 70493766b..814adb64d 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -628,39 +628,6 @@ function rcmail_wash_html($html, $p, $cid_replaces) $p += array('safe' => false, 'inline_html' => true); - // special replacements (not properly handled by washtml class) - $html_search = array( - '/(<\/nobr>)(\s+)(<nobr>)/i', // space(s) between <NOBR> - '/<title[^>]*>[^<]*<\/title>/i', // PHP bug #32547 workaround: remove title tag - '/^(\0\0\xFE\xFF|\xFF\xFE\0\0|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/', // byte-order mark (only outlook?) - '/<html\s[^>]+>/i', // washtml/DOMDocument cannot handle xml namespaces - ); - $html_replace = array( - '\\1'.' '.'\\3', - '', - '', - '<html>', - ); - $html = preg_replace($html_search, $html_replace, trim($html)); - - // PCRE errors handling (#1486856), should we use something like for every preg_* use? - if ($html === null && ($preg_error = preg_last_error()) != PREG_NO_ERROR) { - $errstr = "Could not clean up HTML message! PCRE Error: $preg_error."; - - if ($preg_error == PREG_BACKTRACK_LIMIT_ERROR) - $errstr .= " Consider raising pcre.backtrack_limit!"; - if ($preg_error == PREG_RECURSION_LIMIT_ERROR) - $errstr .= " Consider raising pcre.recursion_limit!"; - - raise_error(array('code' => 620, 'type' => 'php', - 'line' => __LINE__, 'file' => __FILE__, - 'message' => $errstr), true, false); - return ''; - } - - // fix (unknown/malformed) HTML tags before "wash" - $html = preg_replace_callback('/(<[\/]*)([^\s>]+)/', 'rcmail_html_tag_callback', $html); - // charset was converted to UTF-8 in rcube_storage::get_message_part(), // change/add charset specification in HTML accordingly, // washtml cannot work without that @@ -674,9 +641,6 @@ function rcmail_wash_html($html, $p, $cid_replaces) $html = '<head>' . $meta . '</head>' . $html; } - // turn relative into absolute urls - $html = rcmail_resolve_base($html); - // clean HTML with washhtml by Frederic Motte $wash_opts = array( 'show_washed' => false, @@ -702,7 +666,7 @@ function rcmail_wash_html($html, $p, $cid_replaces) $wash_opts['html_attribs'] = $p['html_attribs']; // initialize HTML washer - $washer = new washtml($wash_opts); + $washer = new rcube_washtml($wash_opts); if (!$p['skip_washer_form_callback']) $washer->add_callback('form', 'rcmail_washtml_callback'); @@ -740,7 +704,7 @@ function rcmail_print_body($part, $p = array()) // convert html to text/plain if ($data['type'] == 'html' && $data['plain']) { - $txt = new html2text($data['body'], false, true); + $txt = new rcube_html2text($data['body'], false, true); $body = $txt->get_text(); $part->ctype_secondary = 'plain'; } @@ -921,22 +885,6 @@ function rcmail_washtml_callback($tagname, $attrib, $content, $washtml) /** - * Callback function for HTML tags fixing - */ -function rcmail_html_tag_callback($matches) -{ - $tagname = $matches[2]; - - $tagname = preg_replace(array( - '/:.*$/', // Microsoft's Smart Tags <st1:xxxx> - '/[^a-z0-9_\[\]\!-]/i', // forbidden characters - ), '', $tagname); - - return $matches[1].$tagname; -} - - -/** * return table with message headers */ function rcmail_message_headers($attrib, $headers=null) @@ -1319,20 +1267,6 @@ function rcmail_part_image_type($part) } } -/** - * Convert all relative URLs according to a <base> in HTML - */ -function rcmail_resolve_base($body) -{ - // check for <base href=...> - if (preg_match('!(<base.*href=["\']?)([hftps]{3,5}://[a-z0-9/.%-]+)!i', $body, $regs)) { - $replacer = new rcube_base_replacer($regs[2]); - $body = $replacer->replace($body); - } - - return $body; -} - /** * modify a HTML message that it can be displayed inside a HTML page diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index 36d850f8f..eb0ba89c6 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -559,7 +559,7 @@ if ($isHtml) { $plugin['body'] = rcmail_replace_emoticons($plugin['body']); // add a plain text version of the e-mail as an alternative part. - $h2t = new html2text($plugin['body'], false, true, 0, $message_charset); + $h2t = new rcube_html2text($plugin['body'], false, true, 0, $message_charset); $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n", false, $message_charset); $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true); |