Perhaps you need to try Michael's solution first.
From what I understand there are two functions that you will need to change.
1) Replace the complete function "mime_encode()" in the file ./include/class.pop3.php with:
//Conver text to desired encoding..defaults to utf8
function mime_encode($text, $charset=null, $enc='utf-8') {
$encodings = array('UTF-8','WINDOWS-1251', 'WINDOWS-1252', 'ISO-8859-1', 'ISO-8859-15', 'koi8-r');
if($charset){
$charset = strtoupper($charset);
$text = iconv($charset, $enc.'//IGNORE', $text);
}else{
$sourceEncoding = mb_detect_encoding($text, $encodings);
$text = iconv($sourceEncoding, $enc . '//IGNORE', $text);
}
return $text;
}
2) Replace the complete function "getPart()" also in the file ./include/class.pop3.php with:
function getPart($mid,$mimeType,$encoding=false,$struct=null,$partNumber=false){
if(!$struct)
$struct=imap_fetchstructure($this->mbox, $mid);
//Match the mime type.
if($struct && strcasecmp($mimeType,$this->getMimeType($struct))==0){
$partNumber=$partNumber?$partNumber;
if(($text=imap_fetchbody($this->mbox, $mid, $partNumber))){
if($struct->encoding==3 or $struct->encoding==4){
$text=$this->decode($struct->encoding,$text);
}
if($struct->parameters && !strcasecmp($struct->parameters->attribute,'CHARSET') && strcasecmp($struct->parameters->value,'US-ASCII')) {
$charset=trim($struct->parameters->value);
$text=$this->mime_encode($text,$charset,$encoding);
}else{
$text=$this->mime_encode($text, '', $encoding);
}
return $text;
}
}
//Do recursive search
if($struct && $struct->parts){
while(list($i, $substruct) = each($struct->parts)) {
if($partNumber)
$prefix = $partNumber . '.';
if(($text=$this->getPart($mid,$mimeType,$encoding,$substruct,$prefix.($i+1))))
return $text;
}
}
//No luck.
return false;
}