diff --git a/include/api.tickets.php b/include/api.tickets.php
index 7fd5ba713c8237aad483c4a44b08989cf9b17c3f..e4f5153dcc4ae0422eb3d410cdd18cba1e6cd25f 100644
--- a/include/api.tickets.php
+++ b/include/api.tickets.php
@@ -17,8 +17,11 @@ class TicketController extends ApiController {
             ), 
             "message", "ip", "priorityId"
         );
-        if ($format == "xml") return array("ticket" => $supported);
-        else return $supported;
+
+        if(!strcasecmp($format, 'email'))
+            $supported = array_merge($supported, array('header', 'mid', 'emailId', 'ticketId'));
+
+        return $supported;
     }
 
     function create($format) {
diff --git a/include/class.api.php b/include/class.api.php
index df8cfb0c8a9cb9f452b62de56c1e15181731d614..bccf81f12cd397f017873fc5329c3b65b411207e 100644
--- a/include/class.api.php
+++ b/include/class.api.php
@@ -316,4 +316,39 @@ class ApiJsonDataParser extends JsonDataParser {
     }
 }
 
+/* Email parsing */
+include_once "class.mailparse.php";
+class ApiEmailDataParser extends EmailDataParser {
+
+    function parse($stream) {
+        return $this->fixup(parent::parse($stream));
+    }
+
+    function fixup($data) {
+        global $cfg;
+
+        if(!$data) return $data;
+
+        $data['source'] = 'Email';
+
+        if(!$data['message'])
+            $data['message'] = $data['subject']?$data['subject']:'(EMPTY)';
+
+        if(!$data['subject'])
+            $data['subject'] = '[No Subject]';
+
+        if(!$data['emailId'])
+            $data['emailId'] = $cfg->getDefaultEmailId();
+
+        if($data['email'] && preg_match ('[[#][0-9]{1,10}]', $data['subject'], $matches)) {
+            if(($tid=Ticket::getIdByExtId(trim(preg_replace('/[^0-9]/', '', $matches[0])), $data['email'])))
+                $data['ticketId'] = $tid;
+        }
+
+        if(!$cfg->useEmailPriority())
+            unset($data['priorityId']);
+
+        return $data;
+    }
+}
 ?>