{'.dechex(ord('\\1')).'}'",$string); } /** * Calculates id of MIME entity * @param string $entString * @param integer $direction * @return string * @access private */ function CalcEntity($entString, $direction) { $result = $entString; if ($direction == -1) { $pos = strrpos($entString,'.'); $result = substr($entString,0,$pos); } switch ($direction) { case 0: $pos = strrpos($entString,'.'); if ($pos === false) { $entString++; $result= $entString; } else { $level = substr($entString,0,$pos); $sublevel = substr($entString,$pos+1); $sublevel++; $result = "$level".'.'."$sublevel"; } break; case 1: $result = "$entString".".0"; break; default: break; } return ($result); } /** * Returns actual message details * @param string $mailbox * @param string $passed_id * @param boolean $stripHTML If TRUE, only plain text is returned, * default is FALSE, wherein output contains * pretty-HTMLification of message body * @return string The formatted message details * @access public */ function get_message_details($mailbox, $passed_id, $stripHTML=FALSE) { global $imapServerAddress, $imapPort, $color,$msgd_8bit_in_hex; $returnValue = ''; sqgetGlobalVar('username', $username, SQ_SESSION); $imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0); $read = sqimap_mailbox_select($imapConnection, $mailbox); $body = sqimap_run_command($imapConnection, "FETCH $passed_id RFC822",true, $response, $readmessage, TRUE); $message_body = ''; $header = false; $mimepart = false; $bnd_end = false; $messageheader = true; $messageheaderstart=false; $boundaries = array(); $entities = array(); session_unregister("entities"); $pre = ''; $end = ''; $entStr = ''; $bla =''; $content = array (); $content_indx = -1; $contentset = false; $count=count($body); $body[$count-1] = substr($body[$count-1], -1); for ($i=1; $i < $count; $i++) { $line = rtrim($body[$i]); if ($line == '') { $pre = ''; $end = ''; if ($bnd_end) { $header = true; $mimepart = false; } else if ($messageheader) { if ($header) { $header=false; $end = '
'; } $mimepart = -$header; $bnd_end = false; if ($messageheaderstart) { $messageheaderstart=false; } } else if ($messageheaderstart) { $messageheader= false; } else { if ($header) { $pre = ''; $end = '
'; } $header = false; $mimepart=true; } $contentset = false; $nameset = false; } else { if (!$header && $messageheader) { $messageheaderstart=true; if ($pre != '') { $pre = ''; $end = ''; } } if (!$messageheader && !$header ) { $mimepart=true; } else { $mimepart=false; } $pre = ''; $end = ''; } if ( ( $header || $messageheader) && (preg_match("/^.*boundary=\"?(.+(?=\")|.+).*/i",$line,$reg)) ) { $bnd = $reg[1]; $bndreg = $bnd; $bndreg = str_replace("\\","\\\\",$bndreg); $bndreg = str_replace("?","\\?",$bndreg); $bndreg = str_replace("+","\\+",$bndreg); $bndreg = str_replace(".","\\.",$bndreg); $bndreg = str_replace("/","\\/",$bndreg); $bndreg = str_replace("-","\\-",$bndreg); $bndreg = str_replace("(","\\(",$bndreg); $bndreg = str_replace(")","\\)",$bndreg); $boundaries[] = array( 'bnd' => $bnd, 'bndreg' => $bndreg); $messageheader = false; $messageheaderstart=false; $mimepart=false; if ($entStr=='') { $entStr='0'; } else { $entStr = CalcEntity("$entStr",1); } } if (($line != '' && $line{0} == '-' || $header) && isset($boundaries[0])) { $cnt=count($boundaries)-1; $bnd = $boundaries[$cnt]['bnd']; $bndreg = $boundaries[$cnt]['bndreg']; $regstr = '/^--'."($bndreg)".".*".'/'; if (preg_match($regstr,$line,$reg) ) { $bndlen = strlen($reg[1]); $bndend = false; if (strlen($line) > ($bndlen + 3)) { if ($line{$bndlen+2} == '-' && $line{$bndlen+3} == '-') $bndend = true; } if ($bndend) { $entStr = CalcEntity("$entStr",-1); array_pop($boundaries); $pre .= ''; $end .= ''; $header = true; $mimepart = false; $bnd_end = true; $encoding = ''; } else { $header = true; $bnd_end = false; $entStr = CalcEntity("$entStr",0); $content_indx++; $content[$content_indx]=array(); $content[$content_indx]['ent'] = '$entStr".''; $pre .= '
'; $end .= ''; $header = true; $mimepart = false; $encoding = ''; } } else { if ($header) { if (!$contentset && preg_match("/^.*(content-type:)\s*(\w+)\/(\w+).*/i",$line,$reg)) { if (strtolower($reg[2]) == 'message' && strtolower($reg[3]) == 'rfc822') { $messageheader = true; } $content[$content_indx]['type'] = "$reg[2]/$reg[3]"; $contentset = true; if ($reg[2] == 'image') { $entities["$entStr"] = array(); $entities["$entStr"]['entity'] = $entStr; $entities["$entStr"]['contenttype']=$reg[2].'/'.$reg[3]; } } else if (!$nameset && preg_match("/^.*(name=\s*)\"(.*)\".*/i",$line,$reg)) { $name = htmlspecialchars($reg[2]); $content[$content_indx]['name'] = decodeHeader($name); $nameset = true; if (isset($entities["$entStr"])) { $entities["$entStr"]['name'] = urlEncode($reg[2]); } } else if (preg_match("/^.*(content-transfer-encoding:)\s*(\w+-?(\w+)?).*/i",$line,$reg) ) { $encoding = $reg[2]; if (isset($entities["$entStr"])) { $entities["$entStr"]['encoding']=$reg[2]; } $content[$content_indx]['encoding'] = $encoding; $mimeentity = ''; } $pre .= ''; $end .= ''; //$mimepart=false; } } } if ($stripHTML) { $message_body .= $line . "\r\n"; } else { $line = htmlspecialchars($line); if ($msgd_8bit_in_hex) $line = msgd_convert_to_hex($line); $message_body .= "$pre"."$line"."$end"."\r\n"; } } //$returnValue .= returnTime($start).'
'; $xtra = << ECHO; if (!$stripHTML) { ob_start(); displayHtmlHeader( _("Message Details"), $xtra, FALSE ); $returnValue .= ob_get_contents(); ob_end_clean(); } /* body */ if (!$stripHTML) { $returnValue .= "\n"; $returnValue .= ''."\n"; $returnValue .= '
'."\n"; } if (count($content) > 0 && !$stripHTML) { $returnValue .= '

'._("Bodystructure")."

\n\n"; $returnValue .= ''. ''. ''. ''. ''. ''. ''. ''; for ($i = 0; $i < count($content);$i++) { $returnValue .= ''."\n"; } $returnValue .= '
'._("Entity").''._("Content-Type").''._("Name").''._("Encoding").'
'; $returnValue .= $content[$i]['ent'].''; if (isset($content[$i]['type'])) { $returnValue .= $content[$i]['type']; } else $returnValue .= 'TEXT/PLAIN'; $returnValue .= ''; if (isset($content[$i]['name'])) { $returnValue .= $content[$i]['name']; } else $returnValue .= ' '; $returnValue .= ''; if (isset($content[$i]['encoding'])) { $returnValue .= $content[$i]['encoding']; } else $returnValue .= ' '; $returnValue .= '

'."\n"; } if (!$stripHTML) { $returnValue .= '

'._("RFC822 Message body")."

\n\n"; $returnValue .= '
'; } else { $returnValue .= '
';
    }

    $returnValue .= $message_body;
    
    if (!$stripHTML) {
        $returnValue .= '
'; } else { $returnValue .= ''; } return $returnValue; } ?>