448 |
$newvalue=headerDecode($newvalue); // maybe there are more encoded |
$newvalue=headerDecode($newvalue); // maybe there are more encoded |
449 |
return(mb_convert_encoding($newvalue, "EUC-JP", "auto")); // parts |
return(mb_convert_encoding($newvalue, "EUC-JP", "auto")); // parts |
450 |
} else { |
} else { |
451 |
if (eregi('".*"',$value)) { // quoted-printable decoding |
return(mb_convert_encoding(decode_structured_body($value), "EUC-JP", "auto")); |
|
$result1=eregi_replace('(.*)"(.*)"(.*)','\1',$value); |
|
|
$result2=eregi_replace('(.*)"(.*)"(.*)','\2',$value); |
|
|
$result3=eregi_replace('(.*)"(.*)"(.*)','\3',$value); |
|
|
$result2=eregi_replace('\\(.)','AIUEO\1',$result2); |
|
|
$result2=eregi_replace('\\(.)','AIUEO\1',$result2); |
|
|
$result2=eregi_replace('(.)','AIUEO\1',$result2); |
|
|
$newvalue=$result1.'"'.$result2.'"'.$result3; |
|
|
return(mb_convert_encoding($newvalue, "EUC-JP", "auto")); |
|
|
} else { // there wasn't anything encoded, return the original string |
|
|
return(mb_convert_encoding($value, "EUC-JP", "auto")); |
|
|
} |
|
452 |
} |
} |
453 |
} |
} |
454 |
|
|
497 |
$header->id=$value; |
$header->id=$value; |
498 |
break; |
break; |
499 |
case "subject:": |
case "subject:": |
500 |
$header->subject=headerDecode($value); |
$header->subject = decode_unstructured_body($value); |
501 |
break; |
break; |
502 |
case "newsgroups:": |
case "newsgroups:": |
503 |
$header->newsgroups=$value; |
$header->newsgroups=$value; |
550 |
case "x-newsreader:": |
case "x-newsreader:": |
551 |
case "x-mailer:": |
case "x-mailer:": |
552 |
case "user-agent:": |
case "user-agent:": |
553 |
$header->user_agent=trim($value); |
$header->user_agent=trim(decode_structured_body($value)); |
554 |
break; |
break; |
555 |
case "x-face:": |
case "x-face:": |
556 |
// echo "<p>-".base64_decode($value)."-</p>"; |
// echo "<p>-".base64_decode($value)."-</p>"; |
565 |
return $header; |
return $header; |
566 |
} |
} |
567 |
|
|
568 |
|
function decode_unstructured_body ($body) { |
569 |
|
$patterns = array ( |
570 |
|
"/(=\\?[^\\x00-\\x20()<>@,;:\\\\\"/\\[\\]?.=\\x7F]+\\?[BQ]\\?[^\\x00-\\x20\\x3F\\x7F]*\\?=)/ei", |
571 |
|
); |
572 |
|
$replace = array ( |
573 |
|
"mb_decode_mimeheader('\\1')", |
574 |
|
); |
575 |
|
return preg_replace ($patterns, $replace, $body); |
576 |
|
} |
577 |
|
|
578 |
|
function decode_structured_body ($body) { |
579 |
|
$patterns = array ( |
580 |
|
"/\"((?:[^\"\\\\]+|\\\\.)*)\"/e", |
581 |
|
"/\(((?:[^()\\\\]+|\\\\.|(?:\((?:[^()\\\\]+|\\\\.|(?:\((?:[^)\\\\]+|\\\\.\ |
582 |
|
)*\)))*\)))*)\)/e", |
583 |
|
); |
584 |
|
$replace = array ( |
585 |
|
"mb_convert_encoding(decode_quoted_pair('\\1'), 'EUC-JP', 'auto')", |
586 |
|
"'('.mb_convert_encoding(decode_quoted_pair('\\1'), 'EUC-JP', 'auto').')'", |
587 |
|
); |
588 |
|
return preg_replace ($patterns, $replace, $body); |
589 |
|
} |
590 |
|
|
591 |
|
function decode_quoted_pair($value) { |
592 |
|
$value = ereg_replace('\\\\(\\\\")', "\\1", $value); |
593 |
|
return ereg_replace('\\\\(.)', "\\1", $value); |
594 |
|
} |
595 |
|
|
596 |
function decode_body($body,$encoding) { |
function decode_body($body,$encoding) { |
597 |
$bodyzeile=""; |
$bodyzeile=""; |
598 |
switch ($encoding) { |
switch ($encoding) { |
710 |
// if ($body=="") $body=" "; |
// if ($body=="") $body=" "; |
711 |
// } |
// } |
712 |
$body=decode_body($body,$message->header->content_transfer_encoding); |
$body=decode_body($body,$message->header->content_transfer_encoding); |
713 |
$message->body[0]=$body; |
$message->body[0] = mb_convert_encoding($body, "EUC-JP", "auto"); |
714 |
} |
} |
715 |
if (!isset($message->header->content_type_charset)) |
if (!isset($message->header->content_type_charset)) |
716 |
$message->header->content_type_charset=array("ISO-8859-1"); |
$message->header->content_type_charset=array("ISO-8859-1"); |
782 |
return false; |
return false; |
783 |
$rawmessage=array(); |
$rawmessage=array(); |
784 |
$line=lieszeile($ns); |
$line=lieszeile($ns); |
785 |
$line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP"); |
#$line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP"); |
786 |
while(strcmp($line,".") != 0) { |
while(strcmp($line,".") != 0) { |
787 |
$rawmessage[]=$line; |
$rawmessage[]=$line; |
788 |
$line=lieszeile($ns); |
$line=lieszeile($ns); |
789 |
$line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP"); |
#$line=mb_convert_encoding($line, "EUC-JP", "ISO-2022-JP"); |
790 |
} |
} |
791 |
$message=parse_message($rawmessage); |
$message=parse_message($rawmessage); |
792 |
if (ereg('^[0-9]+$',$id)) $message->header->number=$id; |
if (ereg('^[0-9]+$',$id)) $message->header->number=$id; |