From fd8c5061097f156da55a9cee8972aa4f13daa7b1 Mon Sep 17 00:00:00 2001 From: thomascube Date: Mon, 14 Nov 2005 23:55:46 +0000 Subject: SMTPS support and minor bugfixes --- program/include/bugs.inc | 8 ++++++-- program/include/main.inc | 6 +++++- program/include/rcube_shared.inc | 8 ++++++-- program/include/rcube_smtp.inc | 16 +++++++++++++++- 4 files changed, 32 insertions(+), 6 deletions(-) (limited to 'program/include') diff --git a/program/include/bugs.inc b/program/include/bugs.inc index d67281ef3..c9116d5a2 100644 --- a/program/include/bugs.inc +++ b/program/include/bugs.inc @@ -63,8 +63,12 @@ function log_bug($arg_arr) $arg_arr['message'], $arg_arr['file'], $arg_arr['line']); - - if ($fp = fopen($INSTALL_PATH.'logs/errors', 'a')) + + if (empty($CONFIG['log_dir'])) + $CONFIG['log_dir'] = $INSTALL_PATH.'logs'; + + if ($fp = fopen($CONFIG['log_dir'].'/errors', 'a')) + { fwrite($fp, $log_entry); fclose($fp); diff --git a/program/include/main.inc b/program/include/main.inc index adb0b8822..306d2105e 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -40,12 +40,16 @@ function rcmail_startup($task='mail') include_once('config/db.inc.php'); $CONFIG = array_merge($CONFIG, $rcmail_config); + if (empty($CONFIG['log_dir'])) + $CONFIG['log_dir'] = $INSTALL_PATH.'logs'; + else + $CONFIG['log_dir'] = ereg_replace('\/$', '', $CONFIG['log_dir']); // set PHP error logging according to config if ($CONFIG['debug_level'] & 1) { ini_set('log_errors', 1); - ini_set('error_log', $INSTALL_PATH.'logs/errors'); + ini_set('error_log', $CONFIG['log_dir'].'/errors'); } if ($CONFIG['debug_level'] & 4) ini_set('display_errors', 1); diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc index edf19b66e..9b1b23bf6 100644 --- a/program/include/rcube_shared.inc +++ b/program/include/rcube_shared.inc @@ -1146,6 +1146,8 @@ EOF; // perform utf-8 decoding if ($utf8_decode && function_exists('utf8ToUnicodeEntities')) $text = utf8ToUnicodeEntities($text); + else if ($utf8_decode) + $OUTPUT->set_charset('UTF-8'); // format output @@ -1206,7 +1208,7 @@ function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) { if (!$html_encode_arr) { - $html_encode_arr = get_html_translation_table(HTML_ENTITIES); // HTML_SPECIALCHARS + $html_encode_arr = get_html_translation_table(HTML_SPECIALCHARS); // HTML_ENTITIES $html_encode_arr[chr(128)] = '€'; unset($html_encode_arr['?']); unset($html_encode_arr['&']); @@ -1238,10 +1240,12 @@ function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) // if the replace tables for RTF, XML and JS are not yet defined if (!$js_rep_table) { + $js_rep_table = $rtf_rep_table = $xml_rep_table = array(); + for ($c=160; $c<256; $c++) // can be increased to support more charsets { $hex = dechex($c); - $js_rep_table[Chr($c)] = sprintf("\u%s%s", str_repeat('0', 4-strlen($hex)), $hex); + //$js_rep_table[Chr($c)] = sprintf("\u%s%s", str_repeat('0', 4-strlen($hex)), $hex); $rtf_rep_table[Chr($c)] = "\\'$hex"; $xml_rep_table[Chr($c)] = "&#$c;"; } diff --git a/program/include/rcube_smtp.inc b/program/include/rcube_smtp.inc index e5691759c..e4aea09d2 100644 --- a/program/include/rcube_smtp.inc +++ b/program/include/rcube_smtp.inc @@ -53,12 +53,26 @@ function smtp_mail($from, $recipients, $headers, &$body) { global $SMTP_CONN, $CONFIG, $SMTP_ERROR; $smtp_timeout = null; + $smtp_host = $CONFIG['smtp_server']; $smtp_port = is_numeric($CONFIG['smtp_port']) ? $CONFIG['smtp_port'] : 25; + $smtp_host_url = parse_url($CONFIG['smtp_server']); + // overwrite port + if ($smtp_host_url['host'] && $smtp_host_url['port']) + { + $smtp_host = $smtp_host_url['host']; + $smtp_port = $smtp_host_url['port']; + } + + // re-write smtp host + if ($smtp_host_url['host'] && $smtp_host_url['scheme']) + $smtp_host = sprintf('%s://%s', $smtp_host_url['scheme'], $smtp_host_url['host']); + + // create Net_SMTP object and connect to server if (!is_object($smtp_conn)) { - $SMTP_CONN = new Net_SMTP($CONFIG['smtp_server'], $smtp_port, 'localhost'); + $SMTP_CONN = new Net_SMTP($smtp_host, $smtp_port, 'localhost'); // set debugging if ($CONFIG['debug_level'] & 8) -- cgit v1.2.3