'.$protocol.''; //$headers = imap_fetch_overview($imap, $msgno); //include 'connection.php'; $headers=(imap_headerinfo($imap, $msgno)); //$headersArray = (array) $headers[0]; $headersArray = (array) $headers; //$content = (array) $headers[0]; $content = (array) $headers; $content['subject'] = mime_header_decode($content['subject']); //$content['from'] = mime_header_decode($content['from']); $fromaddressReal = (array)$content['from'][0]; $content['fromaddressReal'] = $fromaddressReal['mailbox']."@".$fromaddressReal['host']; $content['fromaddress'] = mime_header_decode($content['fromaddress']); //$content['to'] = mime_header_decode($content['to']); $content['toaddress'] = mime_header_decode($content['toaddress']); if (isset($content['ccaddress'])){ $content['ccaddress'] = mime_header_decode($content['ccaddress']); } else{ $content['ccaddress'] = ""; } $content['msgno'] = $msgno; //var_dump($content); if ($protocol > 0){ include 'connection.php'; mysqli_query($con,"set names utf8"); $sql1 = "select * from book where aaField=".$protocol; $rslt1= mysqli_query($con,$sql1); $row1 = mysqli_fetch_array($rslt1, MYSQLI_BOTH); $content['newSubject'] = $row1['subjectField']; $content['newFrom'] = $row1['fromField']; //var_dump($row1['subjectField']); } else{ $protocol =0; } ?> <?php echo "Μήνυμα ταχυδρομείου ".($protocol>0?$protocol:""); ?>

Πρωτοκόλληση Εγγράφων 0?"- αρ.πρωτ. ".$protocolAsText:"");?>

structure = $structure; $obj->partNumber = ''; $flattened = array(); flattenParts($flattened,$obj); //var_dump($flattened); $htmlBody = ""; $plainBody = ""; $tnefMessage =""; $charset = ""; $charset1 = ""; for ($i=0;$istructure->type == 0 && strtolower($flattened[$i]->structure->subtype) =="html" ){ $htmlBody = getPart($imap,$msgno,$flattened[$i]->partNumber,$flattened[$i]->structure->encoding); if ($flattened[$i]->structure->ifparameters){ for ($j=0;$jstructure->parameters);$j++){ //echo "attr ".$j; if ($flattened[$i]->structure->parameters[$j]->attribute == "charset"){ $charset = strtolower($flattened[$i]->structure->parameters[$j]->value); } } } } if ($flattened[$i]->structure->type == 0 && strtolower($flattened[$i]->structure->subtype) =="plain" ){ $plainBody = getPart($imap,$msgno,$flattened[$i]->partNumber,$flattened[$i]->structure->encoding); if ($flattened[$i]->structure->ifparameters){ for ($j=0;$jstructure->parameters);$j++){ //echo "attr ".$j; if ($flattened[$i]->structure->parameters[$j]->attribute == "charset"){ $charset1 = strtolower($flattened[$i]->structure->parameters[$j]->value); } } } } } if ($charset != "utf-8"){ $htmlBody = iconv($charset,"utf-8",$htmlBody); } if ($charset1 != "utf-8"){ $plainBody = iconv($charset,"utf-8",$plainBody); } //echo "charset =".$charset; //var_dump($structure); $attachments = array(); getAttachments($attachments, $flattened , $imap, $msgno,$tnefMessage); //var_dump($flattened); // Έλεγχος αν υπάρχει η διεύθυνση στο βιβλίο διευθύνσεων στον πίνακα adeies include 'mich_connectionAdeies.php'; mysqli_query($con1,"set names utf8"); $sqlAddressBook = "select address from addressbook where address='".$content['fromaddressReal']."'"; $rsltAddressBook = mysqli_query($con1,$sqlAddressBook); $isInAddressBook = mysqli_num_rows($rsltAddressBook); echo "
"; if ($isInAddressBook==0){ $saveFromAddressButton = ' '; } else{ $saveFromAddressButton = ''; } echo " Από : ".removeQuotes((strip_tags($content['fromaddress'])))."(".$content['fromaddressReal'].")".$saveFromAddressButton."".'
'; echo '

'; echo (strip_tags($content['toaddress'])); echo '
'; echo '

'; echo (strip_tags($content['ccaddress'])); echo '
'; //echo " Προς : ".(strip_tags($content['toaddress'])).'
'; echo " Θέμα : ".(strip_tags($content['subject'])).'
'; if($protocol >0){ //var_dump($content); echo " Πρωτοκολλήθηκε ως (θέμα) : ".(strip_tags($content['newSubject'])).'
'; echo " Πρωτοκολλήθηκε ως (από) : ".(strip_tags($content['newFrom'])).'
'; } echo " Ημερ. : {$content['date']} ".'
'; echo " Συνημμένα :
"; echo "
"; for ($i=0; $i < count($attachments);$i++){ //var_dump($attachments); $encoding = $attachments[$i]['view_encoding']; $index = $attachments[$i]['index']; $isDat = $attachments[$i]['isDat']; $datPartIndex = $attachments[$i]['datPartIndex']; $isPartSymbol =""; if($isDat && ($datPartIndex >=0)){ $isPartSymbol =' '; } if ($attachments[$i]['filename']!=""){ $decodedFilename=$attachments[$i]['filename']; } else if ($attachments[$i]['name']!=""){ $decodedFilename =$attachments[$i]['name']; } else{ $decodedFilename = "tempFile.dat"; } //echo ''; echo $isPartSymbol.' '.$decodedFilename.'
'; } echo "
"; echo '
'; echo '
'; echo ($htmlBody == ""?$plainBody.$tnefMessage:$htmlBody.$tnefMessage); echo '
'; echo ''; //} function getAttachments(&$attachments, $structure, $imap , $msgno,&$tnefMessage){ for($i = 0; $i < count($structure); $i++) { //echo "structure ".$i."--------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----"; //var_dump($structure->parts[$i]); //echo "--------------------------------------------
"; $attachment = array( 'is_attachment' => false, 'filename' => '', 'name' => '', 'attachment' => '', 'is_broken' => false ); if($structure[$i]->structure->ifdparameters) { foreach($structure[$i]->structure->dparameters as $object) { if(strtolower($object->attribute) == 'filename') { $attachment['is_attachment'] = true; $attachment['filename'] =removeQuotesAndSpecial(@mime_header_decode($object->value)); //var_dump($attachment); } } } if($structure[$i]->structure->ifdparameters) { $tempFilename = ""; $isBroken = false; foreach($structure[$i]->structure->dparameters as $object) { $word = strtolower($object->attribute); $string = 'filename*'; if(strpos($word, $string) !== FALSE) { $isBroken = true; $attachment['is_attachment'] = true; if (stripos($object->value,"utf-8''")!== false){ $tempFilename .= removeQuotesAndSpecial(str_ireplace("utf-8''",'',$object->value)); } else if (stripos($object->value,'utf-8"')!== false){ $tempFilename .= removeQuotesAndSpecial(str_ireplace('utf-8"','',$object->value)); } } } if ($isBroken){ $attachment['filename'] =removeQuotesAndSpecial(urldecode($tempFilename)); $attachment['is_attachment'] = true; $attachment['is_broken'] = true; //var_dump($attachment); } } if($structure[$i]->structure->ifparameters) { foreach($structure[$i]->structure->parameters as $object) { if(strtolower($object->attribute) == 'name') { $attachment['is_attachment'] = true; $attachment['name'] = removeQuotesAndSpecial(@mime_header_decode($object->value)); } } } if($structure[$i]->structure->ifdparameters) { $tempFilename = ""; $isBroken = false; foreach($structure[$i]->structure->dparameters as $object) { $word = strtolower($object->attribute); $string = 'name*'; if(strpos($word, $string) !== FALSE) { $isBroken = true; $attachment['is_attachment'] = true; if (stripos($object->value,"utf-8''")!== false){ $tempFilename .=removeQuotesAndSpecial(str_ireplace("utf-8''",'',$object->value)); } else if (stripos($object->value,'utf-8"')!== false){ $tempFilename .=removeQuotesAndSpecial( str_ireplace('utf-8"','',$object->value)); } } } if ($isBroken){ $attachment['name'] =removeQuotesAndSpecial(urldecode($tempFilename)); $attachment['is_attachment'] = true; $attachment['is_broken'] = true; //var_dump($attachment); } } if($attachment['is_attachment']) { $attachment['isDat']=false; $attachment['datPartIndex']=-1; if (($attachment['filename'] == "winmail.dat")&&(($structure[$i]->structure->subtype =="MS-TNEF")||($structure[$i]->structure->subtype =="ms-tnef"))){ $attachment['isDat'] = true; require 'mich_rcube_tnef_decoder.php'; $rcube_tnef_decoder = new rcube_tnef_decoder; $message = imap_fetchbody($imap,$msgno, $structure[$i]->partNumber); switch ($structure[$i]->structure->encoding) { case 0: case 1: $message = imap_8bit($message); break; case 2: $message = imap_binary($message); break; case 3: $message = imap_base64($message); break; case 4: $message = quoted_printable_decode($message); break; } $tnef = $rcube_tnef_decoder->decompress($message); //var_dump($tnef); $tnefMessage = $tnef['message']["stream"]; $enc = mb_detect_encoding($tnefMessage); $tnefMessage = iconv($enc,"UTF-8",$tnefMessage); $tnefAttachments = $tnef['attachments']; for ($j=0;$j true, 'filename' => $tnefAttachments[$j]["name"], 'name' => $tnefAttachments[$j]["name"], 'attachment' => '', 'is_broken' => false, 'isDat'=>true, 'datPartIndex'=>$j, 'view_encoding'=>$structure[$i]->structure->encoding, 'index'=>$structure[$i]->partNumber ); array_push($attachments,$attachmentDat); } //exit(); } //$attachment['attachment'] = imap_fetchbody($imap, $msgno, $i+1); $attachment['view_encoding']= $structure[$i]->structure->encoding; $attachment['index']= $structure[$i]->partNumber; if($structure[$i]->structure->encoding == 3) { // 3 = BASE64 //$attachment['attachment'] = base64_decode($attachment['attachment']); } elseif($structure[$i]->structure->encoding == 4) { // 4 = QUOTED-PRINTABLE //$attachment['attachment'] = quoted_printable_decode($attachments[$i]['attachment']); } //var_dump($attachment); array_push($attachments,$attachment); } } } function decode_mime_string($string, $charset = 'UTF-8') { $decodedString = ''; $elements = imap_mime_header_decode($string); foreach ($elements as $element) { //for all elements... if ($element->charset == 'default') { //if 'default' charset... $element->charset = mb_detect_encoding($element->text); } //$decodedString .= mb_convert_encoding($element->text, "UTF-8", "cp1253"); //echo $element->charset; //$decodedString .= mb_convert_encoding($element->text, "UTF-8", $element->charset); $decodedString .= iconv($element->charset,"UTF-8",$element->text); //$decodedString = $element->text ; } return $decodedString; } function removeQuotes ($string){ $string = str_replace('"', '', $string); $string = str_replace("'", "", $string); return $string; } function flattenParts(&$parts, $part, $skip_message=false) { $this_part = $part->structure; $partNumber = $part->partNumber; //$internetMediaType = $mailstructure->getInternetMediaType(); //if ($internetMediaType->isMultipart()) { //if multipart... if ($this_part->type == 1){ //multipart $num_parts = count($this_part->parts); $found_plain=false; $found_html=false; //if( $internetMediaType->isAlternativeMultipart() ) { if ($this_part->subtype == 'alternative'){ // check if alternative consists of PLAIN and HTML, if yes we skip the PLAIN for ($i = 0; $i < $num_parts; $i++) { if( strtolower($this_part->parts[$i]->subtype) == "plain" ) { $found_plain=true; } if( strtolower($this_part->parts[$i]->subtype) == "html" ) { $found_html=true; } } } for ($i = 0; $i < $num_parts; $i++) { if ($partNumber != '') { if (substr($partNumber, -1) != '.') $partNumber = $partNumber . '.'; } if( $found_plain==true && $found_html==true ) { if( strtolower($this_part->parts[$i]->subtype) != "plain" ) { $obj = new stdClass(); $obj->structure = $this_part->parts[$i]; $obj->partNumber = $partNumber.($i+1); flattenParts($parts, $obj,$skip_message); } } else { $obj = new stdClass(); $obj->structure = $this_part->parts[$i]; $obj->partNumber = $partNumber.($i+1); flattenParts($parts, $obj,$skip_message); //flattenParts($parts, new NOCC_MailStructure($this_part->parts[$i]),$partNumber.($i+1),$skip_message); } } } //else if( $internetMediaType->isMessage()) { //if message... else if ($this_part->type == 2){ //message if (strtolower($this_part->subtype) == 'rfc822'){ //if RFC822 message... if (empty($partNumber)) { $partNumber = '1'; } $obj = new stdClass(); $obj->structure = $this_part; // ΔΙΟΡΘΩΣΗ 1-3-22 ΗΤΑΝ $obj->structure=$STRUCTURE $obj->partNumber = $partNumber; //$part = new NOCC_MailPart($mailstructure, $partNumber); array_unshift($parts, $obj); $skip_message=true; } if (isset($this_part->parts[0]->parts)) { $num_parts = count($this_part->parts[0]->parts); for ($i = 0; $i < $num_parts; $i++) { $obj = new stdClass(); $obj->structure = $this_part->parts[0]->parts[$i]; $obj->partNumber = $partNumber . '.' . ($i + 1); flattenParts($parts, $obj,$skip_message); //flattenParts($parts, new NOCC_MailStructure($this_part->parts[0]->parts[$i]), ,$skip_message); } } } else { if (empty($partNumber)) { $partNumber = '1'; } $obj = new stdClass(); $obj->structure = $this_part; $obj->partNumber = $partNumber; $isAttachment = 0; $internetMediaType = 0; $disposition = ""; if ($this_part->type == 0){ if (strtolower($this_part->subtype) == 'plain' || strtolower($this_part->subtype) == 'html') { $internetMediaType = 1; } } if ($this_part->ifdisposition) { $disposition = $this_part->disposition; } if (strtolower($disposition ) == 'attachment') { $isAttachment = 1; } if( $isAttachment || !$skip_message || ! $internetMediaType ) { array_unshift($parts, $obj); } } } function getPart($connection, $messageNumber, $partNumber,$encoding) { $data = imap_fetchbody($connection, $messageNumber, $partNumber); switch($encoding) { case 0: return $data; // 7BIT case 1: return $data; // 8BIT case 2: return $data; // BINARY case 3: return base64_decode($data); // BASE64 case 4: return quoted_printable_decode($data); // QUOTED_PRINTABLE case 5: return $data; // OTHER } } function mime_header_decode($header) { $source = imap_mime_header_decode($header); //var_dump($source); //result[] = new result; //$result[0]->text=''; //$result[0]->charset='ISO-8859-1'; //$result[0]->charset=detect_charset($source[$j]->text); $str = ""; for ($j = 0; $j < count($source); $j++ ) { $element_charset = ($source[$j]->charset == 'default') ? 'ISO-8859-1' : $source[$j]->charset; if ($element_charset == '' || $element_charset == null) { $element_charset = 'ISO-8859-1'; } if (($element_charset =="UTF-8")||($element_charset =="utf-8")){ //$element_converted = ConvertToUTF8($source[$j]->text); $element_converted = $source[$j]->text; } else{ $element_converted = iconv($element_charset, 'UTF-8', $source[$j]->text); if (!$element_converted){ //return "error in mail ".$source[$j]->text; //continue; } } $result[$j] = new stdClass(); $result[$j]->text = $element_converted; $result[$j]->charset = 'UTF-8'; $str .= $result[$j]->text; } return $str; } imap_close($imap); function removeQuotesAndSpecial ($string){ $string = str_replace('"', '', $string); $string = str_replace("'", "", $string); $string = preg_replace('/[\@\;\&]+/', '', $string); return $string; } ?>