|
@@ -332,6 +332,7 @@ class Rfc822Header {
|
|
}
|
|
}
|
|
$is_encoded = false;
|
|
$is_encoded = false;
|
|
$addr_structure->group = $group;
|
|
$addr_structure->group = $group;
|
|
|
|
+ $grouplookup = false;
|
|
if ($at) {
|
|
if ($at) {
|
|
$addr_structure->mailbox = substr($addr, 0, $at);
|
|
$addr_structure->mailbox = substr($addr, 0, $at);
|
|
$addr_structure->host = substr($addr, $at+1);
|
|
$addr_structure->host = substr($addr, $at+1);
|
|
@@ -340,17 +341,22 @@ class Rfc822Header {
|
|
if ($lookup) {
|
|
if ($lookup) {
|
|
$aAddr = call_user_func_array($lookup,array($addr));
|
|
$aAddr = call_user_func_array($lookup,array($addr));
|
|
if (isset($aAddr['email'])) {
|
|
if (isset($aAddr['email'])) {
|
|
- $at = strpos($aAddr['email'], '@');
|
|
|
|
- $addr_structure->mailbox = substr($aAddr['email'], 0, $at);
|
|
|
|
- $addr_structure->host = substr($aAddr['email'], $at+1);
|
|
|
|
- if (isset($aAddr['name'])) {
|
|
|
|
- $addr_structure->personal = $aAddr['name'];
|
|
|
|
|
|
+ if (strpos($aAddr['email'],',')) {
|
|
|
|
+ $grouplookup = true;
|
|
|
|
+ $addr_ar = $this->parseAddress($aAddr['email'], $ar, $addr_ar, $group, $host,$lookup);
|
|
} else {
|
|
} else {
|
|
- $addr_structure->personal = encodeHeader($addr);
|
|
|
|
|
|
+ $at = strpos($aAddr['email'], '@');
|
|
|
|
+ $addr_structure->mailbox = substr($aAddr['email'], 0, $at);
|
|
|
|
+ $addr_structure->host = substr($aAddr['email'], $at+1);
|
|
|
|
+ if (isset($aAddr['name'])) {
|
|
|
|
+ $addr_structure->personal = $aAddr['name'];
|
|
|
|
+ } else {
|
|
|
|
+ $addr_structure->personal = encodeHeader($addr);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (!$addr_structure->mailbox) {
|
|
|
|
|
|
+ if (!$grouplookup && !$addr_structure->mailbox) {
|
|
$addr_structure->mailbox = trim($addr);
|
|
$addr_structure->mailbox = trim($addr);
|
|
if ($host) {
|
|
if ($host) {
|
|
$addr_structure->host = $host;
|
|
$addr_structure->host = $host;
|
|
@@ -362,13 +368,15 @@ class Rfc822Header {
|
|
$pos = 0;
|
|
$pos = 0;
|
|
$name = '';
|
|
$name = '';
|
|
$addr = '';
|
|
$addr = '';
|
|
- $addr_ar[] = $addr_structure;
|
|
|
|
|
|
+ if (!$grouplookup) {
|
|
|
|
+ $addr_ar[] = $addr_structure;
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case ':': /* process the group addresses */
|
|
case ':': /* process the group addresses */
|
|
/* group marker */
|
|
/* group marker */
|
|
$group = substr($address, 0, $pos);
|
|
$group = substr($address, 0, $pos);
|
|
$address = substr($address, $pos+1);
|
|
$address = substr($address, $pos+1);
|
|
- $result = $this->parseAddress($address, $ar, $addr_ar, $group);
|
|
|
|
|
|
+ $result = $this->parseAddress($address, $ar, $addr_ar, $group, $lookup);
|
|
$addr_ar = $result[0];
|
|
$addr_ar = $result[0];
|
|
$pos = $result[1];
|
|
$pos = $result[1];
|
|
$address = substr($address, $pos++);
|
|
$address = substr($address, $pos++);
|
|
@@ -477,13 +485,17 @@ class Rfc822Header {
|
|
if ($lookup) {
|
|
if ($lookup) {
|
|
$aAddr = call_user_func_array($lookup,array($addr));
|
|
$aAddr = call_user_func_array($lookup,array($addr));
|
|
if (isset($aAddr['email'])) {
|
|
if (isset($aAddr['email'])) {
|
|
- $at = strpos($aAddr['email'], '@');
|
|
|
|
- $addr_structure->mailbox = substr($aAddr['email'], 0, $at);
|
|
|
|
- $addr_structure->host = substr($aAddr['email'], $at+1);
|
|
|
|
- if (isset($aAddr['name']) && $aAddr['name']) {
|
|
|
|
- $name = $aAddr['name'];
|
|
|
|
|
|
+ if (strpos($aAddr['email'],',')) {
|
|
|
|
+ return $this->parseAddress($aAddr['email'], $ar, $addr_ar, $group, $host,$lookup);
|
|
} else {
|
|
} else {
|
|
- $name = $addr;
|
|
|
|
|
|
+ $at = strpos($aAddr['email'], '@');
|
|
|
|
+ $addr_structure->mailbox = substr($aAddr['email'], 0, $at);
|
|
|
|
+ $addr_structure->host = substr($aAddr['email'], $at+1);
|
|
|
|
+ if (isset($aAddr['name']) && $aAddr['name']) {
|
|
|
|
+ $name = $aAddr['name'];
|
|
|
|
+ } else {
|
|
|
|
+ $name = $addr;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|