parseStructure($read);
$msg = $res[0];
$msg->setEnt('0');
if (count($flags)) {
foreach ($flags as $flag) {
$char = strtoupper($flag{1});
switch ($char) {
case 'S':
if (strtolower($flag) == '\\seen') {
$msg->is_seen = true;
}
break;
case 'A':
if (strtolower($flag) == '\\answered') {
$msg->is_answered = true;
}
break;
case 'D':
if (strtolower($flag) == '\\deleted') {
$msg->is_deleted = true;
}
break;
case 'F':
if (strtolower($flag) == '\\flagged') {
$msg->is_flagged = true;
}
break;
case 'M':
if (strtolower($flag) == '$mdnsent') {
$msg->is_mdnsent = true;
}
break;
default:
break;
}
}
}
// listEntities($msg);
return( $msg );
}
/* this starts the parsing of a particular structure. It is called recursively,
* so it can be passed different structures. It returns an object of type
* $message.
* First, it checks to see if it is a multipart message. If it is, then it
* handles that as it sees is necessary. If it is just a regular entity,
* then it parses it and adds the necessary header information (by calling out
* to mime_get_elements()
*/
function mime_fetch_body($imap_stream, $id, $ent_id) {
global $uid_support;
/*
* do a bit of error correction. If we couldn't find the entity id, just guess
* that it is the first one. That is usually the case anyway.
*/
if (!$ent_id) {
$ent_id = 1;
}
$cmd = "FETCH $id BODY[$ent_id]";
$data = sqimap_run_command ($imap_stream, $cmd, true, $response, $message, $uid_support);
do {
$topline = trim(array_shift( $data ));
} while( $topline && $topline[0] == '*' && !preg_match( '/\* [0-9]+ FETCH.*/i', $topline )) ;
$wholemessage = implode('', $data);
if (ereg('\\{([^\\}]*)\\}', $topline, $regs)) {
$ret = substr( $wholemessage, 0, $regs[1] );
/*
There is some information in the content info header that could be important
in order to parse html messages. Let's get them here.
*/
if ( $ret{0} == '<' ) {
$data = sqimap_run_command ($imap_stream, "FETCH $id BODY[$ent_id.MIME]", true, $response, $message, $uid_support);
}
} else if (ereg('"([^"]*)"', $topline, $regs)) {
$ret = $regs[1];
} else {
global $where, $what, $mailbox, $passed_id, $startMessage;
$par = 'mailbox=' . urlencode($mailbox) . "&passed_id=$passed_id";
if (isset($where) && isset($what)) {
$par .= '&where='. urlencode($where) . "&what=" . urlencode($what);
} else {
$par .= "&startMessage=$startMessage&show_more=0";
}
$par .= '&response=' . urlencode($response) .
'&message=' . urlencode($message).
'&topline=' . urlencode($topline);
echo '
' .
'' .
' ' .
'' .
_("Body retrieval error. The reason for this is most probably that the message is malformed. Please help us making future versions better by submitting this message to the developers knowledgebase!") .
"
" .
_("Submit message") . '
' .
'' . _("Command:") . " $cmd " .
'' . _("Response:") . " $response " .
'' . _("Message:") . " $message " .
'' . _("FETCH line:") . " $topline " .
"
' . implode("\n", $body_ary) . ''; } /* This returns a parsed string called $body. That string can then be displayed as the actual message in the HTML. It contains everything needed, including HTML Tags, Attachments at the bottom, etc. */ function formatBody($imap_stream, $message, $color, $wrap_at, $ent_num, $id, $mailbox='INBOX') { // this if statement checks for the entity to show as the // primary message. To add more of them, just put them in the // order that is their priority. global $startMessage, $username, $key, $imapServerAddress, $imapPort, $show_html_default, $has_unsafe_images, $view_unsafe_images, $sort; $has_unsafe_images= 0; $body = ''; $urlmailbox = urlencode($mailbox); $body_message = getEntity($message, $ent_num); if (($body_message->header->type0 == 'text') || ($body_message->header->type0 == 'rfc822')) { $body = mime_fetch_body ($imap_stream, $id, $ent_num); $body = decodeBody($body, $body_message->header->encoding); $hookResults = do_hook("message_body", $body); $body = $hookResults[1]; // If there are other types that shouldn't be formatted, add // them here if ($body_message->header->type1 == 'html') { $body = charset_decode_japanese($body); if ( $show_html_default <> 1 ) { $body = strip_tags( $body ); translateText($body, $wrap_at, $body_message->header->getParameter['charset']); } else { $body = magicHTML( $body, $id, $message, $mailbox ); } } else { translateText($body, $wrap_at, $body_message->header->getParameter('charset')); } if ($has_unsafe_images) { if ($view_unsafe_images) { $body .= "