techmail.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:4k
源码类别:

电子政务应用

开发平台:

Java

  1. #!/usr/bin/php -q
  2. <?php
  3. // +-------------------------------------------------------------+
  4. // | DeskPRO v [2.0.1 Production]
  5. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  6. // | Supplied by WTN-WDYL
  7. // | Nullified by WTN-WDYL
  8. // | Distribution via WebForum, ForumRU and associated file dumps
  9. // +-------------------------------------------------------------+
  10. // | DESKPRO IS NOT FREE SOFTWARE
  11. // +-------------------------------------------------------------+
  12. // | License ID : Full Enterprise License =) ...
  13. // | License Owner : WTN-WDYL Team
  14. // +-------------------------------------------------------------+
  15. // | $RCSfile: techmail.php,v $
  16. // | $Date: 2004/02/10 01:34:25 $
  17. // | $Revision: 1.6 $
  18. // +-------------------------------------------------------------+
  19. // | File Details:
  20. // | - process() dp1 style management of emails
  21. // +-------------------------------------------------------------+
  22. error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
  23. //////////////////// PART 1 INCLUDES ////////////////////
  24. define('USERZONE', 1);
  25. define('TECHMAILPOP', 1);
  26. include("mail_config.php");
  27. include("mail.php");
  28. ###################### FUNCTION PROCESS() #######################
  29. /*
  30. Deals with incoming user email for new ticket and reply creation
  31. $message: the email after it has been decoded (array of elements)
  32. $source : the source of the email
  33. $gateway: array containing gateway information (for POP3); if not
  34. provided, we try to figure it out ourselves here.
  35. */
  36. function process($message, $source, $gateway = NULL) {
  37. global $db, $settings, $template_cache, $output, $sourceid, $user;
  38. // rename a few variables for ease of access
  39. $email['from'] = trim(strtolower($message->fromEmail));
  40. $headers = $message->headers;
  41. $subject = $headers['subject'];
  42. //////////////////////////////////////////////////////////////
  43. /* 1. STANDARD PROCESSING INDEPENDANT OF REPLY / NEW TICKET */
  44. //////////////////////////////////////////////////////////////
  45. // insert the full email
  46. $sourceid = store_mail($headers, $source);
  47. if (in_string('DeskPRO', $headers['X-Mailer'])) {
  48. return true;
  49. }
  50. // no valid return email (decoding functions look at various mail headers)
  51. if (!$email['from']) {
  52. return true;
  53. }
  54. // the from email is invalid
  55. if (!(validate_email($email['from']))) {
  56. return true;
  57. }
  58. // Handle e-mail bans. First, if this sender is banned, reject it.
  59. if (banned_email($email['from'])) {
  60. return true;
  61. }
  62. // Next, if the sender is ourselves, ignore the message (because that's
  63. // a common spam trick and we'll never be mailing ourselves anyway)
  64. if (strtolower($settings[email_from]) == $email['from']) {
  65. return true;
  66. }
  67. //////////////////// PART 4 EMAIL PARSEING ////////////////////
  68. // get subject bits
  69. if (ereg("[([0-9]{1,})--(.{1,})]", $subject, $arr)) {
  70. $email_id = $arr[1];
  71. $email_code = $arr[2];
  72. }
  73. $parent_email = $db->query_return("
  74. SELECT *
  75. FROM tech_sendmail
  76. WHERE id = '$email_id' 
  77. AND parent = '0' 
  78. AND pass = '$email_code'
  79. ");
  80. if ($db->num_rows() < 1) {
  81. $stop = 1;
  82. $error_match = 1;
  83. }
  84. // get from email
  85. if (eregi("([-.a-z0-9_]+@[-.a-z0-9_)]*)", $email['from'], $arr)) {
  86. $from_email = $arr[1];
  87. } else {
  88. $no = 1;
  89. }
  90. // use text version of body if we have it, otherwise use html version.
  91. if (trim($message->text) != '') {
  92. $body = $message->text;
  93. } elseif (trim($message->html != '')) {
  94. $body = strip_tags($message->html);
  95. }
  96. // select part of body we want
  97. $end = strpos($body, "=== ENTER RESPONSE");
  98. if (($end === false) OR (is_string($post && !$post))) {
  99. $post = $body;
  100. } else {
  101. $post = substr($body, 0, ($end - 3));
  102. }
  103. //////////////////// PART 6 ADD REPLY TO DATABASE ////////////////////
  104. // add the new email to database
  105. $db->query("
  106. INSERT into tech_sendmail SET
  107. date_sent = '" . mktime() . "',
  108. message = '" . addslashes($body) . "',
  109. subject = '" . addslashes($subject) . "',
  110. parent = '" . addslashes($parent_email[id]) . "',
  111. from_email = '" . addslashes($from_email) . "'
  112. ");
  113. //////////////////// PART 7 UPDATE EMAIL ////////////////////
  114. $db->query("
  115. UPDATE tech_sendmail SET
  116. awaiting_reply = '1'
  117. WHERE id = '$parent_email[id]'
  118. ");
  119. }
  120. ?>