Index: mimePart.php =================================================================== RCS file: /repository/pear/Mail_Mime/mimePart.php,v retrieving revision 1.13 diff -u -p -r1.13 mimePart.php --- mimePart.php 10 Dec 2004 23:08:26 -0000 1.13 +++ mimePart.php 7 Jun 2006 18:02:06 -0000 @@ -316,31 +316,34 @@ class Mail_mimePart { $escape = '='; $output = ''; - while(list(, $line) = each($lines)){ - - $linlen = strlen($line); + while(list(, $line) = each($lines)) { + $linlen = strlen($line); $newline = ''; - for ($i = 0; $i < $linlen; $i++) { - $char = substr($line, $i, 1); - $dec = ord($char); - - if (($dec == 32) AND ($i == ($linlen - 1))){ // convert space at eol only - $char = '=20'; + $char = substr($line, $i, 1); // get full character + $byte = 0; + while (isset($char[$byte])) { // loop through bytes + $dec = ord($char[$byte]); - } elseif(($dec == 9) AND ($i == ($linlen - 1))) { // convert tab at eol only - $char = '=09'; - } elseif($dec == 9) { - ; // Do nothing if a tab. - } elseif(($dec == 61) OR ($dec < 32 ) OR ($dec > 126)) { - $char = $escape . strtoupper(sprintf('%02s', dechex($dec))); - } + if (($dec == 32) AND ($i == ($linlen - 1))) { // convert space at eol only + $newchar = '=20'; + } elseif(($dec == 9) AND ($i == ($linlen - 1))) { // convert tab at eol only + $newchar = '=09'; + } elseif($dec == 9) { + $newchar = $char[$byte]; // Do nothing if a tab. + } elseif(($dec == 61) OR ($dec < 32 ) OR ($dec > 126)) { + $newchar = $escape . strtoupper(sprintf('%02s', dechex($dec))); + } else { + $newchar = $char[$byte]; + } - if ((strlen($newline) + strlen($char)) >= $line_max) { // MAIL_MIMEPART_CRLF is not counted - $output .= $newline . $escape . $eol; // soft line break; " =\r\n" is okay - $newline = ''; - } - $newline .= $char; + if ((strlen($newline) + strlen($newchar)) >= $line_max) { // MAIL_MIMEPART_CRLF is not counted + $output .= $newline . $escape . $eol; // soft line break; " =\r\n" is okay + $newline = ''; + } + $newline .= $newchar; + $byte++; + } // end of while } // end of for $output .= $newline . $eol; }