]*?>.*?@siu', '@]*?>.*?@siu' ), array( ' ', ' '), $text ); return $result; } function br2nl($string){ $result = $string; $result = str_replace('
', "\r\n", $result); $result = str_replace('
', "\r\n", $result); $result = str_replace('
', "\r\n", $result); $result = str_replace('
', "\r\n", $result); $result = str_replace('
', "\r\n", $result); $result = str_replace('
', "\r\n", $result); $result = str_replace('
', "\r\n", $result); return $result; } function flattenParts($messageParts, $flattenedParts = array(), $prefix = '', $index = 1, $fullPrefix = true) { foreach($messageParts as $part) { $flattenedParts[$prefix.$index] = $part; if(isset($part->parts)) { if($part->type == 2) { $flattenedParts = flattenParts($part->parts, $flattenedParts, $prefix.$index.'.', 0, false); } elseif($fullPrefix) { $flattenedParts = flattenParts($part->parts, $flattenedParts, $prefix.$index.'.'); } else { $flattenedParts = flattenParts($part->parts, $flattenedParts, $prefix); } unset($flattenedParts[$prefix.$index]->parts); } $index++; } return $flattenedParts; } function getPart($connection, $messageNumber, $partNumber, $encoding) { $data = imap_fetchbody($connection, $messageNumber, $partNumber); switch($encoding) { case 3: return base64_decode($data); // BASE64 case 4: return imap_qprint($data); // QUOTED_PRINTABLE default: return $data; // 0: 7BIT, 1: 8BIT, 2: BINARY, 5: OTHER } } $connection = imap_open ( $mail_box , $mail_user , $mail_pass, !OP_SECURE ) or die("Error: " . imap_last_error()); $MC = imap_check($connection); $messageNumber = $MC->Nmsgs; if($messageNumber == 0) die; // // Check last mail // $hds = imap_headerinfo($connection, $messageNumber); echo nl2br(print_r($hds, true)); // Check if mail is authorized $to = $hds->from[0]->mailbox."@".$hds->from[0]->host; if(count($mail_accept) > 0 && !in_array($to, $mail_accept) { // delete without warning imap_delete ($connection, "$messageNumber"); // process next mail die; } // // Process last mail // $structure = imap_fetchstructure($connection, $messageNumber); if(isset($structure->parts)) { $flattenedParts = flattenParts($structure->parts); } else { $flattenedParts[1] = $structure; } foreach($flattenedParts as $partNumber => $part) { switch($part->type) { case 0: $message = getPart($connection, $messageNumber, $partNumber, $part->encoding); foreach($part->parameters as $parameter) { if(strtoupper($parameter->attribute) == "CHARSET") { $charset = $parameter->value; echo "
$charset
"; if(function_exists('mb_convert_encoding')) { $message = mb_convert_encoding ($message, "UTF-8", strtoupper($charset)); } else { $message = utf8_encode($message); } } } if($part->subtype == "HTML") { $message = br2nl($message); // ToDo: strip "