Advertisement
Guest User

Untitled

a guest
Oct 21st, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.56 KB | None | 0 0
  1. <?php
  2. include 'connection.php';
  3.  
  4. function getmsg($mbox, $mid)
  5. {
  6.  
  7. }
  8.  
  9. function getpart($mbox, $mid, $p, $partno)
  10. {
  11. // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
  12. global $htmlmsg, $plainmsg, $charset, $attachments;
  13.  
  14. // DECODE DATA
  15. $data = ($partno) ? imap_fetchbody($mbox, $mid, $partno) : // multipart
  16. imap_body($mbox, $mid); // simple
  17. // Any part may be encoded, even plain text messages, so check everything.
  18. if ($p->encoding == 4)
  19. $data = quoted_printable_decode($data);
  20. elseif ($p->encoding == 3)
  21. $data = base64_decode($data);
  22.  
  23. // PARAMETERS
  24. // get all parameters, like charset, filenames of attachments, etc.
  25. $params = array();
  26. if ($p->parameters)
  27. foreach ($p->parameters as $x)
  28. $params[strtolower($x->attribute)] = $x->value;
  29. if ($p->dparameters)
  30. foreach ($p->dparameters as $x)
  31. $params[strtolower($x->attribute)] = $x->value;
  32.  
  33. // ATTACHMENT
  34. // Any part with a filename is an attachment,
  35. // so an attached text file (type 0) is not mistaken as the message.
  36. if ($params['filename'] || $params['name']) {
  37. // filename may be given as 'Filename' or 'Name' or both
  38. $filename = ($params['filename']) ? $params['filename'] : $params['name'];
  39. // filename may be encoded, so see imap_mime_header_decode()
  40. $attachments[$filename] = $data; // this is a problem if two files have same name
  41. }
  42.  
  43. // TEXT
  44. if ($p->type == 0 && $data) {
  45. // Messages may be split in different parts because of inline attachments,
  46. // so append parts together with blank row.
  47. if (strtolower($p->subtype) == 'plain')
  48. $plainmsg .= trim($data) . "nn";
  49. else
  50. $htmlmsg .= $data . "<br><br>";
  51. $charset = $params['charset']; // assume all parts are same charset
  52. }
  53.  
  54. // EMBEDDED MESSAGE
  55. // Many bounce notifications embed the original message as type 2,
  56. // but AOL uses type 1 (multipart), which is not handled here.
  57. // There are no PHP functions to parse embedded messages,
  58. // so this just appends the raw source to the main message.
  59. elseif ($p->type == 2 && $data) {
  60. $plainmsg .= $data . "nn";
  61. }
  62.  
  63. // SUBPART RECURSION
  64. if ($p->parts) {
  65. foreach ($p->parts as $partno0 => $p2)
  66. getpart($mbox, $mid, $p2, $partno . '.' . ($partno0 + 1)); // 1.2, 1.2.1, etc.
  67. }
  68. }
  69.  
  70. /* /////////////////* EMAIL TICKETS BINNENHALEN */
  71. // TODO
  72. /* need to get the below out the code !!!! */
  73. $hostname = '{xxxxxxxxxx}INBOX';
  74. $username = 'xxxxxxx@xxxxxxx.be';
  75. $password = 'xxxxxxx';
  76.  
  77. // make mailbox connection
  78. $inbox = imap_open($hostname, $username, $password) or die('Cannot connect to server: ' . imap_last_error());
  79.  
  80. // search for new mails (unread)
  81. $emails = imap_search($inbox, 'NEW');
  82.  
  83. foreach ($emails as $emailNumber) {
  84. //getmsg($inbox, $emailNumber);
  85.  
  86. // input $mbox = IMAP stream, $mid = message id
  87. // output all the following:
  88. global $charset, $htmlmsg, $plainmsg, $attachments;
  89. $htmlmsg = $plainmsg = $charset = '';
  90. $attachments = array();
  91.  
  92. // HEADER
  93. $header = imap_header($inbox, $emailNumber);
  94. // add code here to get date, from, to, cc, subject...
  95.  
  96. // BODY
  97. $overview = imap_fetch_overview($inbox,$emailNumber,0);
  98. $s = imap_fetchstructure($inbox, $emailNumber);
  99. if (! $s->parts) // simple
  100. getpart($inbox, $emailNumber, $s, 0); // pass 0 as part-number
  101. else { // multipart: cycle through each part
  102. foreach ($s->parts as $partno0 => $p)
  103. getpart($inbox, $emailNumber, $p, $partno0 + 1);
  104. }
  105.  
  106. //Check of het ticket een reply is op een eerder ticket
  107.  
  108. $subject = utf8_decode(imap_utf8($overview[0]->subject));
  109.  
  110. echo $output;
  111.  
  112. if (strpos($subject, '#') !== false) {
  113.  
  114. function extract_all($beginning, $end, $string) {
  115. $beginningPos = strpos($string, $beginning);
  116. $endPos = strpos($string, $end);
  117. if ($beginningPos === false || $endPos === false) {
  118. // niet gevonden
  119. return $string;
  120. }
  121.  
  122. $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);
  123.  
  124. $textToDelete = substr($textToDelete, 1, -1);
  125.  
  126. //Dit is de ID van het hoofdticket.
  127. $id_extracted_from_email = $textToDelete;
  128. $_SESSION['reply_id'] = $id_extracted_from_email;
  129. $_SESSION['ticket_status'] = "1";
  130. }
  131.  
  132. $string = $subject;
  133. $out = extract_all('#', '*', $string);
  134. print($out);
  135.  
  136. }
  137. else{
  138. $id_extracted_from_email = "0";
  139. $_SESSION['ticket_status'] = "0";
  140. }
  141.  
  142. // ZET HIER ALLES IN EEN DB
  143. // bepaal de vars voor het te deleten record
  144.  
  145. $mFrom = $header->from;
  146. $sender_email = $mFrom[0]->mailbox . "@" . $mFrom[0]->host;
  147. $sender = $mFrom[0]->personal;
  148.  
  149. $message = ($htmlmsg != '') ? $htmlmsg : $plainmsg;
  150.  
  151. $reply_id = $_SESSION['reply_id'];
  152. $ticket_status = $_SESSION['ticket_status'];
  153.  
  154. $unixTimestamp = strtotime($header->date);
  155. $datum = date("Y-m-d H:i:s", $unixTimestamp);
  156.  
  157. $subject = $header->subject;
  158.  
  159. $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');";
  160.  
  161. $result_add_record = $conn->query($sql_add_record);
  162.  
  163. // Loggen
  164. $categorie_name_met_quotes = 'Er is een nieuw ticket van "' . $NAME . '" toegekomen.';
  165. $short_message = 'Er is een nieuw ticket binnengekomen';
  166. add_log("2016-07-03 14:00:00", "$short_message", "$categorie_name_met_quotes", "add_ticket", "0", NULL);
  167. }
  168.  
  169. // echo $output;
  170.  
  171. imap_expunge($inbox);
  172. imap_close($inbox);
  173. $_SESSION['reply_id'] = "";
  174. $_SESSION['ticket_status'] = "";
  175.  
  176. // *************** EINDE TICKETS BINNENHALEN
  177.  
  178. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement