]*?>.*?@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 "