From 13c1afbcbbc71c64f41eb7d764917bb4fea9893f Mon Sep 17 00:00:00 2001 From: thomascube Date: Mon, 20 Feb 2006 23:29:14 +0000 Subject: Fixed some charset bugs --- program/steps/mail/get.inc | 4 ++-- program/steps/mail/sendmail.inc | 25 ++++++++++++------------- 2 files changed, 14 insertions(+), 15 deletions(-) (limited to 'program/steps/mail') diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc index 5a4fea153..99cd211c6 100644 --- a/program/steps/mail/get.inc +++ b/program/steps/mail/get.inc @@ -70,8 +70,8 @@ else if ($_GET['_part']) $mimetype = sprintf('%s/%s', $ctype_primary, $ctype_secondary); $filename = $part->d_parameters['filename'] ? $part->d_parameters['filename'] : $part->ctype_parameters['name']; - - if ($ctype_primary=='text') + + if ($ctype_primary=='text' && $ctype_secondary=='html') { list($MESSAGE['parts']) = rcmail_parse_message($part, array('safe' => (bool)$_GET['_safe'], diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index a520a5043..ec0f1166f 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -39,7 +39,7 @@ if (!isset($_SESSION['compose']['id'])) function rcmail_get_identity($id) { - global $DB; + global $DB, $CHARSET, $OUTPUT; // get identity record $sql_result = $DB->query("SELECT *, email AS mailto @@ -53,7 +53,9 @@ function rcmail_get_identity($id) { $sql_arr = $DB->fetch_assoc($sql_result); $out = $sql_arr; - $out['string'] = sprintf('%s <%s>', $sql_arr['name'], $sql_arr['mailto']); + $out['string'] = sprintf('%s <%s>', + rcube_charset_convert($sql_arr['name'], $CHARSET, $OUTPUT->get_charset()), + $sql_arr['mailto']); return $out; } @@ -74,10 +76,7 @@ if (empty($_POST['_to']) && empty($_POST['_subject']) && $_POST['_message']) // set default charset -if (empty($CHARSET)) - $CHARSET = 'ISO-8859-1'; - -$input_charset = $CHARSET; +$input_charset = $OUTPUT->get_charset(); $message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $input_charset; $mailto_regexp = array('/[,;]\s*[\r\n]+/', '/[\r\n]+/', '/[,;]\s*$/m'); @@ -162,7 +161,7 @@ if (!empty($CONFIG['generic_message_footer'])) // use the configured delimiter for headers -$header_delm = $rcmail_config['mail_header_delimiter'] ? $rcmail_config['mail_header_delimiter'] : "\r\n"; +$header_delm = $CONFIG['mail_header_delimiter'] ? $CONFIG['mail_header_delimiter'] : "\r\n"; // create PEAR::Mail_mime instance $MAIL_MIME = new Mail_mime($header_delm); @@ -198,9 +197,9 @@ $message_param = array('text_encoding' => $transfer_encoding, $msg_body = $MAIL_MIME->get($message_param); $msg_subject = $headers['Subject']; -global $MBSTRING; -if ($MBSTRING&&function_exists( "mb_encode_mimeheader")) - $headers['Subject'] = mb_encode_mimeheader( $headers['Subject'],$message_charset); + +if ($MBSTRING && function_exists("mb_encode_mimeheader")) + $headers['Subject'] = mb_encode_mimeheader($headers['Subject'], $message_charset); // send thru SMTP server using cusotm SMTP library if ($CONFIG['smtp_server']) @@ -238,15 +237,15 @@ if ($CONFIG['smtp_server']) else { // unset some headers because they will be added by the mail() function - $headers_php = $MAIL_MIME->_headers; $headers_enc = $MAIL_MIME->headers($headers); + $headers_php = $MAIL_MIME->_headers; unset($headers_php['To'], $headers_php['Subject']); - + // reset stored headers and overwrite $MAIL_MIME->_headers = array(); $header_str = $MAIL_MIME->txtHeaders($headers_php); - if(ini_get('safe_mode')) + if (ini_get('safe_mode')) $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str); else $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str, "-f$from"); -- cgit v1.2.3