Nmsgs; echo "Number of messages to Process ".$number_of_messages."\n"; if($number_of_messages == 0) { exit(0); } /* $enquiries = $this->Enquiry->find('all', array('recursive'=>0,'fields' => array('Enquiry.title', 'Enquiry.id'))); foreach ($enquiries as $enq) { $enqNumber = $enq['Enquiry']['title']; $id = $enq['Enquiry']['id']; $enquiryList[$enqNumber] = $id; } */ //while($number_of_messages > 0) { $encodingValues = array(); for($i=0; $i <=10; $i++) { $encodingValues[$i] = 0; } // for($i=1; $i <= $number_of_messages; $i++) { for($i=$number_of_messages; $i > 0; $i--) { // $this_header = imap_headerinfo($mbox, $i); // $message = $this->getMessage($mbox, $i, $this_header); $structure = imap_fetchstructure($mbox, $i); //echo "Checking msg number: $i\tSubject: ".$message['subject']."\n"; //echo "Checking msg number: $i\n"; $encoding = $this->extract_encoding($mbox, $structure, $i); if(is_numeric($encoding)) { $encodingValues[$encoding]++; echo "message $i has encoding: $encoding\t total # for this encoding=".$encodingValues[$encoding]."\n"; } //echo "Message: $i / $number_of_messages\n"; /**$enqID = $this->checkIfValidEnquiry($message['subject'], $enquiryList); if($enqID == false) { echo "Deleting msg number: $i\tSubject: ".$message['subject']."\n"; // imap_delete($mbox, $i); //$discardArray[] = $i; }*/ } foreach($encodingValues as $encoding => $count) { echo "Encoding: $encoding\t Count: $count\n"; } //echo "Tidying up now.\n"; // reset($discardArray); // $numberToDiscard= count($discardArray); /* if($numberToDiscard > 0) { echo "Going to discard $numberToDiscard messages\n"; $discardSet = implode(",",$discardArray); $delete_result = imap_delete($mbox, $discardSet); if($delete_result == false) { echo "Error deleting messages"; echo imap_last_error(); } else { echo "Success"; } }*/ /* imap_expunge($mbox); echo "Messages before delete: ".$number_of_messages."\n"; $check = imap_check($mbox); $number_of_messages = $check->Nmsgs; echo "Messages after delete: ".$number_of_messages."\n"; */ // } imap_close($mbox); } function checkIfValidEnquiry($subject, &$enqList) { $subject = iconv_mime_decode($subject, 0, "ISO-8859-1"); $output = array(); // $decoded_subject = iconv_mime_decode($subject, 2, "ISO-8859-1"); preg_match("/CMC\d+([NVQWSOT]|ACT|NT)E\d+-\d+/", $subject, $output); if(isset($output[0])) { //Found a valid-looking Enquiry Number $fetched_enquirynumber = $output[0]; echo "'$fetched_enquirynumber'\n"; if(array_key_exists($fetched_enquirynumber, $enqList)) { //check if it actually exists. $enqid = $enqList[$fetched_enquirynumber]; return $enqid; } else { return false; } } else { return false; } } function getMessage($mbox, $msgnumber, $headers) { $subject = $headers->subject; //$subject = iconv_mime_decode($subject, 0, "ISO-8859-1//IGNORE"); // $subject = mb_convert_encoding($subject, "ISO-8859-1"); // $subject = mb_convert_encoding($subject, "UTF-8"); $subject = mb_decode_mimeheader($subject); $date = $headers->date; $message['subject'] = $subject; return $message; } /** * Adapted from * http://www.electrictoolbox.com/function-extract-email-attachments-php-imap/ * @param $connection * @param $message_number * @return */ function extract_encoding($connection, $structure, $message_number) { $encoding = false; $attachments = array(); //$structure = imap_fetchstructure($connection, $message_number); if(isset($structure->parts)) { $numberOfParts = count($structure->parts); } if(isset($structure->parts) && $numberOfParts) { for($i = 0; $i < $numberOfParts; $i++) { $attachments[$i] = array( 'is_attachment' => false, 'filename' => '', 'name' => '', 'attachment' => '' ); if($structure->parts[$i]->ifdparameters) { foreach($structure->parts[$i]->dparameters as $object) { if(strtolower($object->attribute) == 'filename') { $attachments[$i]['is_attachment'] = true; $attachments[$i]['filename'] = $object->value; } } } if($structure->parts[$i]->ifparameters) { foreach($structure->parts[$i]->parameters as $object) { if(strtolower($object->attribute) == 'name') { $attachments[$i]['is_attachment'] = true; $attachments[$i]['name'] = $object->value; } } } if($attachments[$i]['is_attachment']) { //echo "Encoding is".$structure->parts[$i]->encoding."\n"; /*$attachments[$i]['attachment'] = imap_fetchbody($connection, $message_number, $i+1); //if($structure->parts[$i]->encoding == 3) { // 3 = BASE64 $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']); } elseif($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']); }*/ $encoding = $structure->parts[$i]->encoding; } } } return $encoding; } } ?>