From c7ce77f38bcd4430c11bad43003ddbfca49d5b82 Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@osticket.com> Date: Fri, 16 Nov 2012 18:27:46 -0500 Subject: [PATCH] Report success on ticket denial (hard reject) --- api/pipe.php | 31 +++++++++++++++---------------- include/class.mailfetch.php | 4 ++++ 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/api/pipe.php b/api/pipe.php index 29dfcff1d..851e18f4a 100644 --- a/api/pipe.php +++ b/api/pipe.php @@ -90,31 +90,30 @@ $var['header']=$parser->getHeader(); $var['priorityId']=$cfg->useEmailPriority()?$parser->getPriority():0; $ticket=null; -if(preg_match ("[[#][0-9]{1,10}]",$var['subject'],$regs)) { +if(preg_match ("[[#][0-9]{1,10}]", $var['subject'], $regs)) { $extid=trim(preg_replace("/[^0-9]/", "", $regs[0])); - $ticket= new Ticket(Ticket::getIdByExtId($extid)); - //Allow mismatched emails?? For now hell NO. - if(!is_object($ticket) || strcasecmp($ticket->getEmail(),$var['email'])) - $ticket=null; + if(!($ticket=Ticket::lookupByExtId($extid, $var['email'])) || strcasecmp($ticket->getEmail(), $var['email'])) + $ticket = null; } + $errors=array(); $msgid=0; -if(!$ticket) { //New tickets... - $ticket=Ticket::create($var,$errors,'email'); - if(!is_object($ticket) || $errors) { - api_exit(EX_DATAERR,'Ticket create Failed '.implode("\n",$errors)."\n\n"); - } +if($ticket) { + //post message....postMessage does the cleanup. + if(!($msgid=$ticket->postMessage($var['message'], 'Email',$var['mid'],$var['header']))) + api_exit(EX_DATAERR, 'Unable to post message'); +} elseif(($ticket=Ticket::create($var, $errors, 'email'))) { // create new ticket. $msgid=$ticket->getLastMsgId(); +} else { // failure.... + if(isset($errors['errno']) && $errors['errno'] == 403) + api_exit(EX_SUCCESS); //report success on hard rejection -} else { - //post message....postMessage does the cleanup. - if(!($msgid=$ticket->postMessage($var['message'], 'Email',$var['mid'],$var['header']))) { - api_exit(EX_DATAERR, 'Unable to post message'); - } + api_exit(EX_DATAERR,'Ticket create Failed '.implode("\n",$errors)."\n\n"); } + //Ticket created...save attachments if enabled. -if($cfg->allowEmailAttachments() && ($attachments=$parser->getAttachments())) { +if($ticket && $cfg->allowEmailAttachments() && ($attachments=$parser->getAttachments())) { foreach($attachments as $attachment) { if($attachment['filename'] && $ost->isFileTypeAllowed($attachment['filename'])) $ticket->saveAttachment(array('name' => $attachment['filename'], 'data' => $attachment['body']), $msgid, 'M'); diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php index aa43ce89e..dca6ac3df 100644 --- a/include/class.mailfetch.php +++ b/include/class.mailfetch.php @@ -417,6 +417,10 @@ class MailFetcher { } elseif (($ticket=Ticket::create($var, $errors, 'Email'))) { $msgid = $ticket->getLastMsgId(); } else { + //Report success if the email was absolutely rejected. + if(isset($errors['errno']) && $errors['errno'] == 403) + return true; + //TODO: Log error.. return null; } -- GitLab