function decodeBody($body, $encoding) {
$encoding = strtolower($encoding);
- if ($encoding == "us-ascii") {
- $newbody = $body; // if only they all were this easy
-
- } else if ($encoding == "quoted-printable") {
- $body_ary = explode("\n", $body);
-
- for ($q=0; $q < count($body_ary); $q++) {
- if (substr(trim($body_ary[$q]), -1) == "=") {
- $body_ary[$q] = trim($body_ary[$q]);
- $body_ary[$q] = substr($body_ary[$q], 0, strlen($body_ary[$q])-1);
- } else if (substr(trim($body_ary[$q]), -3) == "=20") {
- $body_ary[$q] = trim($body_ary[$q]);
- $body_ary[$q] = substr($body_ary[$q], 0, strlen($body_ary[$q])-3);
- $body_ary[$q] = "$body_ary[$q]\n";
- }
- }
-
- for ($q=0;$q < count($body_ary);$q++) {
- $body_ary[$q] = ereg_replace("=3D", "=", $body_ary[$q]);
- }
-
- $body = "";
- for ($i = 0; $i < count($body_ary); $i++) {
- $body .= "$body_ary[$i]\n";
- }
+ if ($encoding == "quoted-printable") {
+ $body = quoted_printable_decode($body);
- $newbody = $body;
+ while (ereg("=\n", $body))
+ $body = ereg_replace ("=\n", "", $body);
} else if ($encoding == "base64") {
- $newbody = base64_decode($body);
-
- } else {
- $newbody = $body;
+ $body = base64_decode($body);
}
- return $newbody;
+
+ // All other encodings are returned raw.
+ return $body;
}
// Only US-ASCII and ISO-8859-1 can be displayed without further ado
if ($res[2] != "" && $res[2] != "1") {
- // This get rid of all characters with over 0x9F
+ // This gets rid of all characters with over 0x9F for other
+ // charsets.
$replace = strtr($replace, "\240\241\242\243\244\245\246\247".
"\250\251\252\253\254\255\256\257".
"\260\261\262\263\264\265\266\267".