| 57 |
var $isAnswer; |
var $isAnswer; |
| 58 |
var $username; |
var $username; |
| 59 |
var $user_agent; |
var $user_agent; |
| 60 |
|
var $field; |
| 61 |
var $isReply; |
var $isReply; |
| 62 |
} |
} |
| 63 |
|
|
| 449 |
$newvalue=headerDecode($newvalue); // maybe there are more encoded |
$newvalue=headerDecode($newvalue); // maybe there are more encoded |
| 450 |
return(mb_convert_encoding($newvalue, "EUC-JP", "auto")); // parts |
return(mb_convert_encoding($newvalue, "EUC-JP", "auto")); // parts |
| 451 |
} else { |
} else { |
| 452 |
if (eregi('".*"',$value)) { // quoted-pair |
return(mb_convert_encoding(decode_structured_body($value), "EUC-JP", "auto")); |
|
ereg('([^"]*)"(([^"]+|\\\\.)*)"(.*)',$value,$vals); |
|
|
$newvalue = $vals[1].decode_quoted_pair($vals[2]).$vals[4]; |
|
|
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")); |
|
|
} |
|
| 453 |
} |
} |
| 454 |
} |
} |
| 455 |
|
|
| 480 |
$header = new headerType; |
$header = new headerType; |
| 481 |
$header->isAnswer=false; |
$header->isAnswer=false; |
| 482 |
for ($count=0;$count<count($hdr);$count++) { |
for ($count=0;$count<count($hdr);$count++) { |
| 483 |
$variable=substr($hdr[$count],0,strpos($hdr[$count]," ")); |
$variable=substr($hdr[$count],0,strpos($hdr[$count],":")); |
| 484 |
$value=trim(substr($hdr[$count],strpos($hdr[$count]," ")+1)); |
$value=trim(substr($hdr[$count],strpos($hdr[$count],":")+1)); |
| 485 |
|
$header->field[strtolower($variable)][] = $value; |
| 486 |
switch (strtolower($variable)) { |
switch (strtolower($variable)) { |
| 487 |
case "from:": |
case "from": |
| 488 |
$fromline=address_decode(headerDecode($value),"nirgendwo"); |
$fromline=address_decode(headerDecode($value),"nirgendwo"); |
| 489 |
if (!isset($fromline[0]["host"])) $fromline[0]["host"]=""; |
if (!isset($fromline[0]["host"])) $fromline[0]["host"]=""; |
| 490 |
$header->from=$fromline[0]["mailbox"]."@".$fromline[0]["host"]; |
$header->from=$fromline[0]["mailbox"]."@".$fromline[0]["host"]; |
| 495 |
$header->name=$fromline[0]["personal"]; |
$header->name=$fromline[0]["personal"]; |
| 496 |
} |
} |
| 497 |
break; |
break; |
| 498 |
case "message-id:": |
case "message-id": |
| 499 |
$header->id=$value; |
$header->id=$value; |
| 500 |
break; |
break; |
| 501 |
case "subject:": |
case "subject": |
| 502 |
$header->subject=headerDecode($value); |
$header->subject = decode_unstructured_body($value); |
| 503 |
break; |
break; |
| 504 |
case "newsgroups:": |
case "newsgroups": |
| 505 |
$header->newsgroups=$value; |
$header->newsgroups=$value; |
| 506 |
break; |
break; |
| 507 |
case "organization:": |
case "organization": |
| 508 |
$header->organization=$value; |
$header->organization = decode_unstructured_body($value); |
| 509 |
break; |
break; |
| 510 |
case "content-transfer-encoding:": |
case "content-transfer-encoding": |
| 511 |
$header->content_transfer_encoding=trim(strtolower($value)); |
$header->content_transfer_encoding=trim(strtolower($value)); |
| 512 |
break; |
break; |
| 513 |
case "content-type:": |
case "content-type": |
| 514 |
$header->content_type=array(); |
$header->content_type=array(); |
| 515 |
$subheader=split(";",$value); |
$subheader=split(";",$value); |
| 516 |
$header->content_type[0]=strtolower(trim($subheader[0])); |
$header->content_type[0]=strtolower(trim($subheader[0])); |
| 535 |
} |
} |
| 536 |
} |
} |
| 537 |
break; |
break; |
| 538 |
case "references:": |
case "references": |
| 539 |
$ref=ereg_replace("> *<", "> <", trim($value)); |
$ref=ereg_replace("> *<", "> <", trim($value)); |
| 540 |
while (strpos($ref,"> <") != false) { |
while (strpos($ref,"> <") != false) { |
| 541 |
$header->references[]=substr($ref,0,strpos($ref," ")); |
$header->references[]=substr($ref,0,strpos($ref," ")); |
| 543 |
} |
} |
| 544 |
$header->references[]=trim($ref); |
$header->references[]=trim($ref); |
| 545 |
break; |
break; |
| 546 |
case "date:": |
case "date": |
| 547 |
$header->date=getTimestamp(trim($value)); |
$header->date=getTimestamp(trim($value)); |
| 548 |
break; |
break; |
| 549 |
case "followup-to:": |
case "followup-to": |
| 550 |
$header->followup=trim($value); |
$header->followup=trim($value); |
| 551 |
break; |
break; |
| 552 |
case "x-newsreader:": |
case "x-newsreader": |
| 553 |
case "x-mailer:": |
case "x-mailer": |
| 554 |
case "user-agent:": |
case "user-agent": |
| 555 |
$header->user_agent=trim(decode_structured_body($value)); |
$header->user_agent= decode_structured_body($value); |
|
break; |
|
|
case "x-face:": |
|
|
// echo "<p>-".base64_decode($value)."-</p>"; |
|
| 556 |
break; |
break; |
| 557 |
} |
} |
| 558 |
} |
} |
| 564 |
return $header; |
return $header; |
| 565 |
} |
} |
| 566 |
|
|
| 567 |
|
function decode_unstructured_body ($body) { |
| 568 |
|
$patterns = array ( |
| 569 |
|
"/(=\\?[^\\x00-\\x20()<>@,;:\\\"\\/\\[\\]?.=\\x7F]+\\?[BQ]\\?[^\\x00-\\x20\\x3F\\x7F]*\\?=)/ei", |
| 570 |
|
); |
| 571 |
|
$replace = array ( |
| 572 |
|
"mb_decode_mimeheader('\\1')", |
| 573 |
|
); |
| 574 |
|
return preg_replace ($patterns, $replace, |
| 575 |
|
mb_convert_encoding(fake_jisx0213($body), "EUC-JP", "auto")); |
| 576 |
|
} |
| 577 |
|
|
| 578 |
function decode_structured_body ($body) { |
function decode_structured_body ($body) { |
| 579 |
$patterns = array ("/\"((?:[^\"\\\\]+|\\\\.)*)\"/e"); |
$patterns = array ( |
| 580 |
$replace = array ("mb_convert_encoding(decode_quoted_pair('\\1'), 'EUC-JP', 'auto')"); |
"/\"((?:[^\"\\\\]+|\\\\.)*)\"/e", |
| 581 |
|
"/\(((?:[^()\\\\]+|\\\\.|(?:\((?:[^()\\\\]+|\\\\.|(?:\((?:[^)\\\\]+|\\\\.\ |
| 582 |
|
)*\)))*\)))*)\)/e", |
| 583 |
|
); |
| 584 |
|
$replace = array ( |
| 585 |
|
"mb_convert_encoding(fake_jisx0213(decode_quoted_pair('\\1')),'EUC-JP','auto')", |
| 586 |
|
"'('.mb_convert_encoding(fake_jisx0213(decode_quoted_pair('\\1')), |
| 587 |
|
'EUC-JP','auto').')'", |
| 588 |
|
); |
| 589 |
return preg_replace ($patterns, $replace, $body); |
return preg_replace ($patterns, $replace, $body); |
| 590 |
} |
} |
| 591 |
|
|
| 594 |
return ereg_replace('\\\\(.)', "\\1", $value); |
return ereg_replace('\\\\(.)', "\\1", $value); |
| 595 |
} |
} |
| 596 |
|
|
| 597 |
|
function fake_jisx0213 ($value) { |
| 598 |
|
$value = preg_replace ("/\\x1B\\\$\\(O/", "\x1B\\\$B", $value); |
| 599 |
|
$value = preg_replace ("/\\x1B\\\$\\(P/", "\x1B\\\$(D", $value); |
| 600 |
|
return $value; |
| 601 |
|
} |
| 602 |
|
|
| 603 |
function decode_body($body,$encoding) { |
function decode_body($body,$encoding) { |
| 604 |
$bodyzeile=""; |
$bodyzeile=""; |
| 605 |
switch ($encoding) { |
switch ($encoding) { |
| 717 |
// if ($body=="") $body=" "; |
// if ($body=="") $body=" "; |
| 718 |
// } |
// } |
| 719 |
$body=decode_body($body,$message->header->content_transfer_encoding); |
$body=decode_body($body,$message->header->content_transfer_encoding); |
| 720 |
$message->body[0]=$body; |
$message->body[0] = mb_convert_encoding($body, "EUC-JP", "auto"); |
| 721 |
} |
} |
| 722 |
if (!isset($message->header->content_type_charset)) |
if (!isset($message->header->content_type_charset)) |
| 723 |
$message->header->content_type_charset=array("ISO-8859-1"); |
$message->header->content_type_charset=array("ISO-8859-1"); |
| 1533 |
echo "<!-- User-Agent: ".htmlspecialchars($head->user_agent)." -->\n"; |
echo "<!-- User-Agent: ".htmlspecialchars($head->user_agent)." -->\n"; |
| 1534 |
} |
} |
| 1535 |
} |
} |
| 1536 |
|
if (isset($head->field["x-moe"])) { |
| 1537 |
|
if ((isset($article_show["X-Moe"])) && ($article_show["X-Moe"])) { |
| 1538 |
|
echo "<span class=\"field x-moe\"><span class=\"name\">".$text_header["X-Moe"] |
| 1539 |
|
."</span> <span class=\"body\">" |
| 1540 |
|
.htmlspecialchars(decode_structured_body( |
| 1541 |
|
join(', ', $head->field["x-moe"]))) |
| 1542 |
|
."</span>\n"; |
| 1543 |
|
} |
| 1544 |
|
} |
| 1545 |
if ((isset($attachment_show)) && ($attachment_show==true) && |
if ((isset($attachment_show)) && ($attachment_show==true) && |
| 1546 |
(isset($head->content_type[1]))) { |
(isset($head->content_type[1]))) { |
| 1547 |
echo $text_header["attachments"]; |
echo $text_header["attachments"]; |