diff --git a/include/pear/Mail/mimeDecode.php b/include/pear/Mail/mimeDecode.php index 59b6e1923c32d5ea5a3816e5c14821b1913fd3bf..b300195824c30528f7ff44987679fd11875889e3 100644 --- a/include/pear/Mail/mimeDecode.php +++ b/include/pear/Mail/mimeDecode.php @@ -28,8 +28,8 @@ * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * - Neither the name of the authors, nor the names of its contributors - * may be used to endorse or promote products derived from this + * - Neither the name of the authors, nor the names of its contributors + * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" @@ -174,9 +174,9 @@ class Mail_mimeDecode extends PEAR function getHeader() { return $this->_header; } - - + + /** * Begins the decoding process. If called statically @@ -219,6 +219,8 @@ class Mail_mimeDecode extends PEAR $params['decode_bodies'] : false; $this->_decode_headers = isset($params['decode_headers']) ? $params['decode_headers'] : false; + $this->_charset = isset($params['charset']) ? + $params['charset'] : 'UTF-8'; $structure = $this->_decode($this->_header, $this->_body); if ($structure === false) { @@ -374,7 +376,7 @@ class Mail_mimeDecode extends PEAR } for ($i = 0; $i < count($structure->parts); $i++) { - + if (!empty($structure->headers['content-type']) AND substr(strtolower($structure->headers['content-type']), 0, 8) == 'message/') { $prepend = $prepend . $mime_number . '.'; $_mime_number = ''; @@ -394,7 +396,7 @@ class Mail_mimeDecode extends PEAR $structure->mime_id = $prepend . $mime_number; $no_refs ? $return[$prepend . $mime_number] = '' : $return[$prepend . $mime_number] = &$structure; } - + return $return; } @@ -567,6 +569,16 @@ class Mail_mimeDecode extends PEAR break; } + //Convert decoded text to the desired charset. + if($charset && $this->_charset && strcasecmp($this->_charset, $charset)) { + if(function_exists('iconv')) + $text = iconv($charset, $this->_charset.'//IGNORE', $text); + elseif(function_exists('mb_convert_encoding')) + $text = mb_convert_encoding($text, $this->_charset, $charset); + elseif(!strcasecmp($this->_charset, 'utf-8')) //forced blind utf8 encoding. + $text = function_exists('imap_utf8')?imap_utf8($text):utf8_encode($text); + } + $input = str_replace($encoded, $text, $input); } @@ -698,7 +710,7 @@ class Mail_mimeDecode extends PEAR /** * getSendArray() returns the arguments required for Mail::send() - * used to build the arguments for a mail::send() call + * used to build the arguments for a mail::send() call * * Usage: * $mailtext = Full email (for example generated by a template) @@ -741,7 +753,7 @@ class Mail_mimeDecode extends PEAR } $to = substr($to,1); return array($to,$header,$this->_body); - } + } /** * Returns a xml copy of the output of