Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- include 'connection.php';
- function getmsg($mbox, $mid)
- {
- }
- function getpart($mbox, $mid, $p, $partno)
- {
- // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
- global $htmlmsg, $plainmsg, $charset, $attachments;
- // DECODE DATA
- $data = ($partno) ? imap_fetchbody($mbox, $mid, $partno) : // multipart
- imap_body($mbox, $mid); // simple
- // Any part may be encoded, even plain text messages, so check everything.
- if ($p->encoding == 4)
- $data = quoted_printable_decode($data);
- elseif ($p->encoding == 3)
- $data = base64_decode($data);
- // PARAMETERS
- // get all parameters, like charset, filenames of attachments, etc.
- $params = array();
- if ($p->parameters)
- foreach ($p->parameters as $x)
- $params[strtolower($x->attribute)] = $x->value;
- if ($p->dparameters)
- foreach ($p->dparameters as $x)
- $params[strtolower($x->attribute)] = $x->value;
- // ATTACHMENT
- // Any part with a filename is an attachment,
- // so an attached text file (type 0) is not mistaken as the message.
- if ($params['filename'] || $params['name']) {
- // filename may be given as 'Filename' or 'Name' or both
- $filename = ($params['filename']) ? $params['filename'] : $params['name'];
- // filename may be encoded, so see imap_mime_header_decode()
- $attachments[$filename] = $data; // this is a problem if two files have same name
- }
- // TEXT
- if ($p->type == 0 && $data) {
- // Messages may be split in different parts because of inline attachments,
- // so append parts together with blank row.
- if (strtolower($p->subtype) == 'plain')
- $plainmsg .= trim($data) . "nn";
- else
- $htmlmsg .= $data . "<br><br>";
- $charset = $params['charset']; // assume all parts are same charset
- }
- // EMBEDDED MESSAGE
- // Many bounce notifications embed the original message as type 2,
- // but AOL uses type 1 (multipart), which is not handled here.
- // There are no PHP functions to parse embedded messages,
- // so this just appends the raw source to the main message.
- elseif ($p->type == 2 && $data) {
- $plainmsg .= $data . "nn";
- }
- // SUBPART RECURSION
- if ($p->parts) {
- foreach ($p->parts as $partno0 => $p2)
- getpart($mbox, $mid, $p2, $partno . '.' . ($partno0 + 1)); // 1.2, 1.2.1, etc.
- }
- }
- /* /////////////////* EMAIL TICKETS BINNENHALEN */
- // TODO
- /* need to get the below out the code !!!! */
- $hostname = '{xxxxxxxxxx}INBOX';
- $username = 'xxxxxxx@xxxxxxx.be';
- $password = 'xxxxxxx';
- // make mailbox connection
- $inbox = imap_open($hostname, $username, $password) or die('Cannot connect to server: ' . imap_last_error());
- // search for new mails (unread)
- $emails = imap_search($inbox, 'NEW');
- foreach ($emails as $emailNumber) {
- //getmsg($inbox, $emailNumber);
- // input $mbox = IMAP stream, $mid = message id
- // output all the following:
- global $charset, $htmlmsg, $plainmsg, $attachments;
- $htmlmsg = $plainmsg = $charset = '';
- $attachments = array();
- // HEADER
- $header = imap_header($inbox, $emailNumber);
- // add code here to get date, from, to, cc, subject...
- // BODY
- $overview = imap_fetch_overview($inbox,$emailNumber,0);
- $s = imap_fetchstructure($inbox, $emailNumber);
- if (! $s->parts) // simple
- getpart($inbox, $emailNumber, $s, 0); // pass 0 as part-number
- else { // multipart: cycle through each part
- foreach ($s->parts as $partno0 => $p)
- getpart($inbox, $emailNumber, $p, $partno0 + 1);
- }
- //Check of het ticket een reply is op een eerder ticket
- $subject = utf8_decode(imap_utf8($overview[0]->subject));
- echo $output;
- if (strpos($subject, '#') !== false) {
- function extract_all($beginning, $end, $string) {
- $beginningPos = strpos($string, $beginning);
- $endPos = strpos($string, $end);
- if ($beginningPos === false || $endPos === false) {
- // niet gevonden
- return $string;
- }
- $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);
- $textToDelete = substr($textToDelete, 1, -1);
- //Dit is de ID van het hoofdticket.
- $id_extracted_from_email = $textToDelete;
- $_SESSION['reply_id'] = $id_extracted_from_email;
- $_SESSION['ticket_status'] = "1";
- }
- $string = $subject;
- $out = extract_all('#', '*', $string);
- print($out);
- }
- else{
- $id_extracted_from_email = "0";
- $_SESSION['ticket_status'] = "0";
- }
- // ZET HIER ALLES IN EEN DB
- // bepaal de vars voor het te deleten record
- $mFrom = $header->from;
- $sender_email = $mFrom[0]->mailbox . "@" . $mFrom[0]->host;
- $sender = $mFrom[0]->personal;
- $message = ($htmlmsg != '') ? $htmlmsg : $plainmsg;
- $reply_id = $_SESSION['reply_id'];
- $ticket_status = $_SESSION['ticket_status'];
- $unixTimestamp = strtotime($header->date);
- $datum = date("Y-m-d H:i:s", $unixTimestamp);
- $subject = $header->subject;
- $sql_add_record = "INSERT INTO `tbl_tickets` (`fld_ticket_id`, `fld_ticket_datetime`, `fld_ticket_assigned_to_id`, `fld_ticket_subject`, `fld_ticket_message`, `fld_ticket_sender_name`, `fld_ticket_sender_email`, fld_ticket_status, fld_ticket_parent_id, fld_ticket_outgoing) VALUES (NULL, '$datum', '', '$subject', '$message', '$sender', '$sender_email', '$ticket_status', '$reply_id', '0');";
- $result_add_record = $conn->query($sql_add_record);
- // Loggen
- $categorie_name_met_quotes = 'Er is een nieuw ticket van "' . $NAME . '" toegekomen.';
- $short_message = 'Er is een nieuw ticket binnengekomen';
- add_log("2016-07-03 14:00:00", "$short_message", "$categorie_name_met_quotes", "add_ticket", "0", NULL);
- }
- // echo $output;
- imap_expunge($inbox);
- imap_close($inbox);
- $_SESSION['reply_id'] = "";
- $_SESSION['ticket_status'] = "";
- // *************** EINDE TICKETS BINNENHALEN
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement