Skip to content

Commit 564a4ed

Browse files
00
1 parent 8e3de82 commit 564a4ed

File tree

3 files changed

+43
-13
lines changed

3 files changed

+43
-13
lines changed

src/Functions.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public static function getMailboxName($mailbox)
8484
*
8585
* @return string
8686
*/
87-
public static function sanitizeAddress($address, $defaultHost = 'localhost')
87+
public static function sanitizeAddress($address, $defaultHost = 'UNKNOWN')
8888
{
8989
$addressList = imap_rfc822_parse_adrlist($address, $defaultHost);
9090

@@ -95,4 +95,17 @@ public static function sanitizeAddress($address, $defaultHost = 'localhost')
9595

9696
return implode(', ', $sanitizedAddress);
9797
}
98+
99+
/**
100+
*
101+
*/
102+
public static function writeAddressFromEnvelope($addressList)
103+
{
104+
$sanitizedAddress = [];
105+
foreach ($addressList as $addressEntry) {
106+
$sanitizedAddress[] = imap_rfc822_write_address($addressEntry[2], $addressEntry[3], $addressEntry[0]);
107+
}
108+
109+
return implode(', ', $sanitizedAddress);
110+
}
98111
}

src/HeaderInfo.php

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,38 @@ public static function fromMessage($message, $defaultHost)
1818
{
1919
file_put_contents('t3.json', json_encode($message, JSON_PRETTY_PRINT));
2020

21-
$replyTo = $message->replyto ?: $message->from;
21+
$to = Functions::writeAddressFromEnvelope($message->envelope[5]);
22+
$from = Functions::writeAddressFromEnvelope($message->envelope[2]);
23+
$sender = Functions::writeAddressFromEnvelope($message->envelope[3]);
24+
25+
if (empty($message->replyto)) {
26+
$replyTo = $from;
27+
} else {
28+
$replyTo = Functions::writeAddressFromEnvelope($message->envelope[4]);
29+
}
2230

2331
return (object) [
2432
'date' => $message->date,
2533
'Date' => $message->date,
26-
'subject' => $message->subject,
27-
'Subject' => $message->subject,
34+
'subject' => $message->envelope[1],
35+
'Subject' => $message->envelope[1],
2836
'message_id' => $message->envelope[9],
29-
'toaddress' => Functions::sanitizeAddress($message->to, $defaultHost),
30-
'to' => self::parseAddressList($message->to, $defaultHost),
31-
'fromaddress' => Functions::sanitizeAddress($message->from, $defaultHost),
32-
'from' => self::parseAddressList($message->from, $defaultHost),
33-
'reply_toaddress' => Functions::sanitizeAddress($replyTo, $defaultHost),
37+
'toaddress' => $to,
38+
'to' => self::parseAddressList($to, $defaultHost),
39+
'fromaddress' => $from,
40+
'from' => self::parseAddressList($from, $defaultHost),
41+
'reply_toaddress' => $replyTo,
3442
'reply_to' => self::parseAddressList($replyTo, $defaultHost),
35-
'senderaddress' => Functions::sanitizeAddress($message->from, $defaultHost),
36-
'sender' => self::parseAddressList($message->from, $defaultHost),
43+
'senderaddress' => $sender,
44+
'sender' => self::parseAddressList($sender, $defaultHost),
3745
'Recent' => ' ',
3846
'Unseen' => ' ',
3947
'Flagged' => ' ',
4048
'Answered' => ' ',
4149
'Deleted' => ' ',
4250
'Draft' => ' ',
4351
'Msgno' => str_pad($message->id, 4, ' ', STR_PAD_LEFT),
44-
'MailDate' => $message->internaldate,
52+
'MailDate' => self::sanitizeMailDate($message->internaldate),
4553
'Size' => strval($message->size),
4654
'udate' => strtotime($message->internaldate)
4755
];
@@ -68,5 +76,14 @@ protected static function parseAddressList($address, $defaultHost)
6876

6977
return $customAddressList;
7078
}
79+
80+
public static function sanitizeMailDate($mailDate)
81+
{
82+
if ($mailDate[0] == '0') {
83+
$mailDate = ' '.substr($mailDate, 1);
84+
}
85+
86+
return $mailDate;
87+
}
7188
}
7289

tests/CompatibilityTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ public function testHeaderInfo()
467467
#file_put_contents('t1.json', json_encode($headerInfo1, JSON_PRETTY_PRINT));
468468
#file_put_contents('t2.json', json_encode($headerInfo2, JSON_PRETTY_PRINT));
469469
#die();
470-
$this->assertEquals($headerInfo1, $headerInfo2);
470+
$this->assertEquals($headerInfo1, $headerInfo2, 'Problem with $messageNum = '.$messageNum);
471471
}
472472

473473
imap_close($imap1);

0 commit comments

Comments
 (0)