From c0309556342871c2f65b5212ffdf35579d1ce7e6 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Fri, 13 Jan 2006 11:03:36 -0500 Subject: [PATCH] Switched to full UTF-8 support --- program/steps/mail/sendmail.inc | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index c29fcf1..ee27818 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -77,6 +77,11 @@ if (empty($CHARSET)) $CHARSET = 'ISO-8859-1'; +$input_charset = $CHARSET; +$message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $input_charset; + +// unset global var +$CHARSET = ''; $mailto_regexp = array('/[,;]\s*[\r\n]+/', '/[\r\n]+/', '/[,;]\s*$/m'); $mailto_replace = array(', ', ', ', ''); @@ -100,20 +105,20 @@ // compose headers array $headers = array('Date' => date('D, j M Y G:i:s O'), 'From' => $identity_arr['string'], - 'To' => $mailto); + 'To' => rcube_charset_convert($mailto, $input_charset, $message_charset)); // additional recipients if ($_POST['_cc']) - $headers['Cc'] = preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_cc'])); + $headers['Cc'] = rcube_charset_convert(preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_cc'])), $input_charset, $message_charset); if ($_POST['_bcc']) - $headers['Bcc'] = preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_bcc'])); + $headers['Bcc'] = rcube_charset_convert(preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_bcc'])), $input_charset, $message_charset); if (strlen($identity_arr['bcc'])) $headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc']; // add subject -$headers['Subject'] = trim(stripslashes($_POST['_subject'])); +$headers['Subject'] = rcube_charset_convert(trim(stripslashes($_POST['_subject'])), $input_charset, $message_charset); if (strlen($identity_arr['organization'])) $headers['Organization'] = $identity_arr['organization']; @@ -141,6 +146,8 @@ if ($CONFIG['useragent']) $headers['User-Agent'] = $CONFIG['useragent']; +// fetch message body +$message_body = rcube_charset_convert(stripslashes($_POST['_message']), $input_charset, $message_charset); // append generic footer to all messages if (!empty($CONFIG['generic_message_footer'])) @@ -150,7 +157,7 @@ { $content = fread($fp, filesize($file)); fclose($fp); - $_POST['_message'] .= "\r\n" . $content; + $message_body .= "\r\n" . rcube_charset_convert($content, 'UTF-8', $message_charset); } } @@ -160,8 +167,8 @@ // create PEAR::Mail_mime instance $MAIL_MIME = new Mail_mime($header_delm); -$MAIL_MIME->setTXTBody(stripslashes($_POST['_message']), FALSE, TRUE); -//$MAIL_MIME->setTXTBody(wordwrap(stripslashes($_POST['_message'])), FALSE, TRUE); +$MAIL_MIME->setTXTBody($message_body, FALSE, TRUE); +//$MAIL_MIME->setTXTBody(wordwrap($message_body), FALSE, TRUE); // add stored attachments, if any @@ -175,8 +182,6 @@ foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath) $MAIL_MIME->addAttachment($filepath, $files['type'][$i], $files['name'][$i], TRUE); - -$message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $CHARSET; // encoding settings for mail composing $message_param = array('text_encoding' => '7bit', @@ -230,7 +235,7 @@ // reset stored headers and overwrite $MAIL_MIME->_headers = array(); $header_str = $MAIL_MIME->txtHeaders($headers_php); - + if(ini_get('safe_mode')) $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str); else @@ -238,6 +243,9 @@ } +// resore page charset +$CHARSET = $input_charset; + // return to compose page if sending failed if (!$sent) { -- Gitblit v1.9.1