'.$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;
}
?>
0?$protocol:""); ?>
Πρωτοκόλληση Εγγράφων 0?"- αρ.πρωτ. ".$protocolAsText:"");?>
structure = $structure;
$obj->partNumber = '';
$flattened = array();
flattenParts($flattened,$obj);
//var_dump($flattened);
$htmlBody = "";
$plainBody = "";
$tnefMessage ="";
$charset = "";
$charset1 = "";
for ($i=0;$i
structure->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 "';
echo '';
echo ($htmlBody == ""?$plainBody.$tnefMessage:$htmlBody.$tnefMessage);
echo '
';
echo '';
echo json_encode($attachments);
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;
}
?>