Skip to content
Snippets Groups Projects
Commit d9aa7859 authored by Jared Hancock's avatar Jared Hancock
Browse files

Merge pull request #565 from protich/feature/delivered-to+mailfetch


Add delivered-to detection to mail fetcher

Reviewed-By: default avatarJared Hancock <jared@osticket.com>
parents 7d6a6990 577fca41
No related branches found
No related tags found
No related merge requests found
...@@ -290,10 +290,21 @@ class MailFetcher { ...@@ -290,10 +290,21 @@ class MailFetcher {
if($headerinfo->cc) if($headerinfo->cc)
$tolist['cc'] = $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', true))) {
if (($delivered_to = Mail_Parse::parseAddressList($dt)))
$tolist['delivered-to'] = $delivered_to;
}
$header['recipients'] = array(); $header['recipients'] = array();
foreach($tolist as $source => $list) { foreach($tolist as $source => $list) {
foreach($list as $addr) { 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( $header['recipients'][] = array(
'source' => "Email ($source)", 'source' => "Email ($source)",
'name' => $this->mime_decode(@$addr->personal), 'name' => $this->mime_decode(@$addr->personal),
...@@ -304,6 +315,16 @@ class MailFetcher { ...@@ -304,6 +315,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? //BCCed?
if(!$header['emailId']) { if(!$header['emailId']) {
if ($headerinfo->bcc) { if ($headerinfo->bcc) {
......
...@@ -163,9 +163,9 @@ class Mail_Parse { ...@@ -163,9 +163,9 @@ class Mail_Parse {
} }
/* static */ /* static */
function findHeaderEntry($headers, $name) { function findHeaderEntry($headers, $name, $allEntries=false) {
if (!is_array($headers)) if (!is_array($headers))
$headers = self::splitHeaders($headers); $headers = self::splitHeaders($headers, $allEntries);
foreach ($headers as $key=>$val) foreach ($headers as $key=>$val)
if (strcasecmp($key, $name) === 0) if (strcasecmp($key, $name) === 0)
return $val; return $val;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment