Bugfixes for encoding and sending with attachments
| | |
| | | AddDefaultCharset UTF-8 |
| | | php_flag display_errors On |
| | | php_value upload_max_filesize 2m |
| | | |
| | |
| | | CHANGELOG RoundCube Webmail |
| | | --------------------------- |
| | | |
| | | 2006/01/19 |
| | | 2006/02/04 |
| | | ---------- |
| | | - Added Slovak translation |
| | | - Added Slovak, Hungarian, Bosnian and Croation translation |
| | | - Fixed bug when inserting signatures with !?& |
| | | - Chopping message headers before inserting into the message cache table (to avoid bugs in Postgres) |
| | | - Allow one-char domains in e-mail addresses |
| | |
| | | - Added LDAP public search (experimental) |
| | | - Applied patch for correct ctrl/shift behavior for message selection (Bug #1326364) |
| | | - Casting to strings when adding empty headers to message cache (Bug #1406026) |
| | | - Skip sender-address as recipient when Reply-to-all |
| | | - Fixes in utf8-class |
| | | - Added patch for Quota display by Aury Fink Filho <nuny@aury.com.br> |
| | | |
| | | |
| | | 2005/12/16 |
| | |
| | | CREATE TABLE contacts ( |
| | | contact_id integer NOT NULL PRIMARY KEY, |
| | | user_id integer NOT NULL default '0', |
| | | created datetime NOT NULL default '0000-00-00 00:00:00', |
| | | changed datetime NOT NULL default '0000-00-00 00:00:00', |
| | | del tinyint NOT NULL default '0', |
| | | name varchar(128) NOT NULL default '', |
| | | email varchar(128) NOT NULL default '', |
| | |
| | | // check client IP in session athorization |
| | | $rcmail_config['ip_check'] = TRUE; |
| | | |
| | | // not sure what this was good for :-) |
| | | // the default locale setting |
| | | $rcmail_config['locale_string'] = 'en'; |
| | | |
| | | // use this format for short date display |
| | |
| | | ini_set('session.use_cookies', 1); |
| | | ini_set('session.gc_maxlifetime', 21600); |
| | | ini_set('session.gc_divisor', 500); |
| | | ini_set('magic_quotes_gpc', 0); |
| | | ini_set('error_reporting', E_ALL&~E_NOTICE); |
| | | |
| | | // increase maximum execution time for php scripts |
| | |
| | | |
| | | // we can use the database for storing session data |
| | | // session queries do not work with MDB2 |
| | | if ($CONFIG['db_backend']!='mdb2' && is_object($DB) /* && $DB->db_provider!='sqlite' */) |
| | | if ($CONFIG['db_backend']!='mdb2' && is_object($DB)) |
| | | include_once('include/session.inc'); |
| | | |
| | | |
| | |
| | | return $str; |
| | | |
| | | // convert charset using iconv module |
| | | if (function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') { |
| | | if (0 && function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') { |
| | | return iconv($from, $to, $str); |
| | | } |
| | | |
| | | $conv = new utf8(); |
| | | |
| | | // convert string to UTF-8 |
| | | if ($from=='UTF-7') |
| | |
| | | $str = utf8_encode($str); |
| | | else if ($from!='UTF-8') |
| | | { |
| | | $conv = new utf8($from); |
| | | $conv->loadCharset($from); |
| | | $str = $conv->strToUtf8($str); |
| | | } |
| | | |
| | |
| | | return utf8_decode($str); |
| | | else if ($to!='UTF-8') |
| | | { |
| | | $conv = new utf8($to); |
| | | $conv->loadCharset($to); |
| | | return $conv->utf8ToStr($str); |
| | | } |
| | | |
| | |
| | | 'message' => 'rcmail_message_container', |
| | | 'messages' => 'rcmail_message_list', |
| | | 'messagecountdisplay' => 'rcmail_messagecount_display', |
| | | 'quotadisplay' => 'rcmail_quota_display', |
| | | 'messageheaders' => 'rcmail_message_headers', |
| | | 'messagebody' => 'rcmail_message_body', |
| | | 'messageattachments' => 'rcmail_message_attachments', |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Get quota |
| | | * added by Nuny |
| | | */ |
| | | function get_quota() |
| | | { |
| | | if ($this->get_capability('QUOTA')) |
| | | { |
| | | $result = iil_C_GetQuota($this->conn); |
| | | return sprintf("%.2fMB / %.2fMB (%.0f%%)", $result["used"] / 1000.0, $result["total"] / 1000.0, $result["percent"]); |
| | | } |
| | | else |
| | | return 'unknown'; |
| | | } |
| | | |
| | | |
| | | // subscribe to a specific mailbox(es) |
| | | function subscribe($mbox, $mode='subscribe') |
| | | { |
| | |
| | | this.enable_command('logout', true); |
| | | |
| | | // disable browser's contextmenus |
| | | //document.oncontextmenu = function(){ return false; } |
| | | document.oncontextmenu = function(){ return false; } |
| | | |
| | | // load body click event |
| | | document.onmousedown = function(){ return rcube_webmail_client.reset_click(); }; |
| | |
| | | this.set_page_buttons(); |
| | | }; |
| | | |
| | | // replace content of quota display |
| | | this.set_quota = function(text) |
| | | { |
| | | if (this.gui_objects.quotadisplay) |
| | | this.gui_objects.quotadisplay.innerHTML = text; |
| | | }; |
| | | |
| | | |
| | | // update the mailboxlist |
| | | this.set_unread_count = function(mbox, count, set_title) |
| | |
| | | //Class definition |
| | | Class utf8{ |
| | | |
| | | var $charset = CP1250; |
| | | var $charset = "ISO-8859-1"; |
| | | var $ascMap = array(); |
| | | var $utfMap = array(); |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | ?> |
| | |
| | | $commands = sprintf("this.set_unread_count('%s', %d, true);\n", addslashes($mbox), $unread_count); |
| | | $commands .= sprintf("this.set_env('messagecount', %d);\n", $count); |
| | | $commands .= sprintf("this.set_rowcount('%s');\n", rcmail_get_messagecount_text()); |
| | | $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota()); |
| | | |
| | | // add new message headers to list |
| | | $a_headers = array(); |
| | |
| | | // get recipent address(es) out of the message headers |
| | | if ($header=='to' && $REPLY_MESSAGE['headers']->replyto) |
| | | $fvalue = $IMAP->decode_header($REPLY_MESSAGE['headers']->replyto); |
| | | |
| | | else if ($header=='to' && $REPLY_MESSAGE['headers']->from) |
| | | $fvalue = $IMAP->decode_header($REPLY_MESSAGE['headers']->from); |
| | | |
| | | // add recipent of original message if reply to all |
| | | else if ($header=='cc' && $REPLY_MESSAGE['reply_all']) |
| | | { |
| | |
| | | $fvalue = ''; |
| | | foreach ($to_addresses as $addr_part) |
| | | { |
| | | if (!in_array($addr_part['mailto'], $sa_recipients)) |
| | | if (!in_array($addr_part['mailto'], $sa_recipients) && (!$REPLY_MESSAGE['FROM'] || !in_array($addr_part['mailto'], $REPLY_MESSAGE['FROM']))) |
| | | { |
| | | $fvalue .= (strlen($fvalue) ? ', ':'').$addr_part['string']; |
| | | $sa_recipients[] = $addr_part['mailto']; |
| | |
| | | $a_recipients = array(); |
| | | if ($REPLY_MESSAGE && is_object($REPLY_MESSAGE['headers'])) |
| | | { |
| | | $REPLY_MESSAGE['FROM'] = array(); |
| | | |
| | | $a_to = $IMAP->decode_address_list($REPLY_MESSAGE['headers']->to); |
| | | foreach ($a_to as $addr) |
| | | { |
| | |
| | | // set identity if it's one of the reply-message recipients |
| | | if (in_array($sql_arr['email'], $a_recipients)) |
| | | $from_id = $sql_arr['identity_id']; |
| | | |
| | | if ($REPLY_MESSAGE && is_array($REPLY_MESSAGE['FROM'])) |
| | | $REPLY_MESSAGE['FROM'][] = $sql_arr['email']; |
| | | } |
| | | |
| | | // overwrite identity selection with post parameter |
| | |
| | | } |
| | | |
| | | |
| | | function rcmail_quota_display($attrib) |
| | | { |
| | | global $IMAP, $OUTPUT, $JS_OBJECT_NAME; |
| | | |
| | | if (!$attrib['id']) |
| | | $attrib['id'] = 'rcmquotadisplay'; |
| | | |
| | | $OUTPUT->add_script(sprintf("%s.gui_object('quotadisplay', '%s');", $JS_OBJECT_NAME, $attrib['id'])); |
| | | |
| | | // allow the following attributes to be added to the <span> tag |
| | | $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id')); |
| | | |
| | | |
| | | $out = '<span' . $attrib_str . '>'; |
| | | $out .= $IMAP->get_quota(); |
| | | $out .= '</span>'; |
| | | return $out; |
| | | } |
| | | |
| | | |
| | | function rcmail_get_messagecount_text() |
| | | { |
| | |
| | | $block = $plain ? '%s' : '%s'; //'<div style="display:block;">%s</div>'; |
| | | $body = $IMAP->mime_decode($body, $encoding); |
| | | $body = $IMAP->charset_decode($body, $parameters); |
| | | |
| | | |
| | | // text/html |
| | | if ($ctype_secondary=='html') |
| | |
| | | } |
| | | |
| | | // part text/[plain|html] OR message/delivery-status |
| | | else if (($primary_type=='text' && ($secondary_type=='plain' || $secondary_type=='html')) || |
| | | else if (($primary_type=='text' && ($secondary_type=='plain' || $secondary_type=='html') && $mail_part->disposition!='attachment') || |
| | | ($primary_type=='message' && $secondary_type=='delivery-status')) |
| | | { |
| | | $a_return_parts[] = array('type' => 'content', |
| | |
| | | if ($_action=='moveto') |
| | | $commands .= sprintf("this.set_unread_count('%s', %d);\n", $_GET['_target_mbox'], $IMAP->messagecount($_GET['_target_mbox'], 'UNSEEN')); |
| | | |
| | | $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota()); |
| | | |
| | | // add new rows from next page (if any) |
| | | if ($_GET['_from']!='show' && $pages>1 && $IMAP->list_page < $pages) |
| | |
| | | $headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc']; |
| | | |
| | | // add subject |
| | | $headers['Subject'] = rcube_charset_convert(trim(stripslashes($_POST['_subject'])), $input_charset, $message_charset); |
| | | $headers['Subject'] = rcube_charset_convert(trim($_POST['_subject']), $input_charset, $message_charset); |
| | | |
| | | if (strlen($identity_arr['organization'])) |
| | | $headers['Organization'] = $identity_arr['organization']; |
| | |
| | | $headers['User-Agent'] = $CONFIG['useragent']; |
| | | |
| | | // fetch message body |
| | | $message_body = rcube_charset_convert(stripslashes($_POST['_message']), $input_charset, $message_charset); |
| | | $message_body = rcube_charset_convert($_POST['_message'], $input_charset, $message_charset); |
| | | |
| | | // append generic footer to all messages |
| | | if (!empty($CONFIG['generic_message_footer'])) |
| | |
| | | else |
| | | { |
| | | // unset some headers because they will be added by the mail() function |
| | | $headers_php = $headers; |
| | | $headers_php = $MAIL_MIME->_headers; |
| | | $headers_enc = $MAIL_MIME->headers($headers); |
| | | unset($headers_php['To'], $headers_php['Subject']); |
| | | |
| | |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | #rcmquotadisplay |
| | | { |
| | | color: #999999; |
| | | font-size: 11px; |
| | | } |
| | |
| | | <roundcube:label name="select" />: |
| | | <roundcube:button command="select-all" label="all" classAct="active" /> |
| | | <roundcube:button command="select-all" prop="unread" label="unread" classAct="active" /> |
| | | <roundcube:button command="select-none" label="none" classAct="active" /> |
| | | <roundcube:button command="select-none" label="none" classAct="active" /> |
| | | <roundcube:label name="quota" />: <roundcube:object name="quotaDisplay" /> |
| | | </div> |
| | | |
| | | </body> |