diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php
index b86aca4ddde1dbcbd2acdc5245275ffbc2451946..5437907ebbf05560a6628c6e4be1bc3ee700b6a1 100644
--- a/include/class.mailfetch.php
+++ b/include/class.mailfetch.php
@@ -419,7 +419,7 @@ class MailFetcher {
         
         $errors=array();
         if($ticket) {
-            if(!($msgid=$ticket->postMessage($var['message'], 'Email', $var['mid'], $var['header'])))
+            if(!($msgid=$ticket->postMessage($vars, 'Email')))
                 return false;
 
         } elseif (($ticket=Ticket::create($var, $errors, 'Email'))) {
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 6e2936624f7be4ac20b515e4aef1ed2dcc58e19d..c8a2ad008781a02e493985246a17d49f18ec18ff 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -1379,40 +1379,43 @@ class Ticket {
     }
 
     //Insert message from client
-    function postMessage($message,$source='',$emsgid=null,$headers='',$newticket=false){
+    function postMessage($vars, $source='', $alerts=true) {
         global $cfg;
        
-        if(!$this->getId()) return 0;
-
+        if(!$vars || !$vars['message'])
+            return 0;
+        
         //Strip quoted reply...on emailed replies
         if(!strcasecmp($source, 'Email') 
                 && $cfg->stripQuotedReply() 
-                && ($tag=$cfg->getReplySeparator()) && strpos($message, $tag))
-            list($message)=split($tag, $message);
+                && ($tag=$cfg->getReplySeparator()) && strpos($vars['message'], $tag))
+            list($vars['message']) = split($tag, $vars['message']);
 
         # XXX: Refuse auto-response messages? (via email) XXX: No - but kill our auto-responder.
 
+
         $sql='INSERT INTO '.TICKET_THREAD_TABLE.' SET created=NOW()'
             .' ,thread_type="M" '
             .' ,ticket_id='.db_input($this->getId())
             # XXX: Put Subject header into the 'title' field
-            .' ,body='.db_input(Format::striptags($message)) //Tags/code stripped...meaning client can not send in code..etc
+            .' ,body='.db_input(Format::striptags($vars['message'])) //Tags/code stripped...meaning client can not send in code..etc
             .' ,source='.db_input($source?$source:$_SERVER['REMOTE_ADDR'])
             .' ,ip_address='.db_input($_SERVER['REMOTE_ADDR']);
     
-        if(!db_query($sql) || !($msgid=db_insert_id())) return 0; //bail out....
+        if(!db_query($sql) || !($msgid=db_insert_id()))
+            return 0; //bail out....
 
         $this->setLastMsgId($msgid);
-
-        if ($emsgid !== null) {
+        
+        if (isset($vars['mid'])) {
             $sql='INSERT INTO '.TICKET_EMAIL_INFO_TABLE
                 .' SET message_id='.db_input($msgid)
-                .', email_mid='.db_input($emsgid)
-                .', headers='.db_input($headers);
+                .', email_mid='.db_input($vars['mid'])
+                .', headers='.db_input($vars['header']);
             db_query($sql);
         }
 
-        if($newticket) return $msgid; //Our work is done...
+        if(!$alerts) return $msgid; //Our work is done...
 
         $autorespond = true;
         if ($autorespond && $headers && TicketFilter::isAutoResponse(Mail_Parse::splitHeaders($headers)))
@@ -1431,7 +1434,7 @@ class Ticket {
         //If enabled...send alert to staff (New Message Alert)
         if($cfg->alertONNewMessage() && $tpl && $email && ($msg=$tpl->getNewMessageAlertMsgTemplate())) {
 
-            $msg = $this->replaceVars($msg, array('message' => $message));
+            $msg = $this->replaceVars($msg, array('message' => $vars['message']));
 
             //Build list of recipients and fire the alerts.
             $recipients=array();
@@ -2219,7 +2222,7 @@ class Ticket {
 
         $dept = $ticket->getDept();
         //post the message.
-        $msgid=$ticket->postMessage($vars['message'],$source,$vars['mid'],$vars['header'],true);
+        $msgid=$ticket->postMessage($vars , $source, false);
 
         // Configure service-level-agreement for this ticket
         $ticket->selectSLAId($vars['slaId']);
diff --git a/tickets.php b/tickets.php
index 626b41474c68fae3305e31b44b669df725ca24f3..cc213787703521d3afb88c79715583d1842487cb 100644
--- a/tickets.php
+++ b/tickets.php
@@ -40,7 +40,7 @@ if($_POST && is_object($ticket) && $ticket->getId()):
 
         if(!$errors) {
             //Everything checked out...do the magic.
-            if(($msgid=$ticket->postMessage($_POST['message'],'Web'))) {
+            if(($msgid=$ticket->postMessage(array('message'=>$_POST['message']), 'Web'))) {
     
                 //Upload files
                 if($cfg->allowOnlineAttachments() && $_FILES['attachments'])