From 53475dd14dade5bd14371fbe94694fb26f5575ab Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@osticket.com> Date: Mon, 17 Feb 2014 14:47:29 +0000 Subject: [PATCH] Add delivered-to detection to mail fetcher Duplicate delivered-to handling from mail parse as temp. solution. --- include/class.mailfetch.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php index 0c24fa72c..82991a012 100644 --- a/include/class.mailfetch.php +++ b/include/class.mailfetch.php @@ -290,10 +290,20 @@ class MailFetcher { if($headerinfo->cc) $tolist['cc'] = $headerinfo->cc; + //Add delivered-to address to list. + if (stripos($header['header'], 'delivered-to:') !==false + && ($dt = Mail_Parse::findHeaderEntry($header['header'], 'delivered-to'))) { + if (($delivered_to = Mail_Parse::parseAddressList($dt))) + $tolist['delivered-to'] = $delivered_to; + } + $header['recipients'] = array(); foreach($tolist as $source => $list) { foreach($list as $addr) { - if(!($emailId=Email::getIdByEmail(strtolower($addr->mailbox).'@'.$addr->host))) { + if (!($emailId=Email::getIdByEmail(strtolower($addr->mailbox).'@'.$addr->host))) { + //Skip virtual Delivered-To addresses + if ($source == 'delivered-to') continue; + $header['recipients'][] = array( 'source' => "Email ($source)", 'name' => $this->mime_decode(@$addr->personal), @@ -304,6 +314,16 @@ class MailFetcher { } } + //See if any of the recipients is a delivered to address + if ($tolist['delivered-to']) { + foreach ($tolist['delivered-to'] as $addr) { + foreach ($header['recipients'] as $i => $r) { + if (strcasecmp($r['email'], $addr->mailbox.'@'.$addr->host) === 0) + $header['recipients'][$i]['source'] = 'delivered-to'; + } + } + } + //BCCed? if(!$header['emailId']) { if ($headerinfo->bcc) { -- GitLab