PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.0.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.0.1
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
acymailing / vendor / javanile / php-imap2 / src / HeaderInfo.php

HeaderInfo.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.0.1, at vendor/javanile/php-imap2/src/HeaderInfo.php

120 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace Javanile\Imap2;
5
6 class HeaderInfo
7 {
8
9 public static function fromMessage($message, $defaultHost)
10 {
11 #file_put_contents('t3.json', json_encode($message, JSON_PRETTY_PRINT));
12
13 $to = Functions::writeAddressFromEnvelope($message->envelope[5]);
14 $cc = Functions::writeAddressFromEnvelope($message->envelope[6]);
15 $from = Functions::writeAddressFromEnvelope($message->envelope[2]);
16 $sender = Functions::writeAddressFromEnvelope($message->envelope[3]);
17
18 if (empty($message->replyto)) {
19 $replyTo = $from;
20 } else {
21 $replyTo = Functions::writeAddressFromEnvelope($message->envelope[4]);
22 }
23
24 $headerInfo = [
25 'date' => $message->envelope[0],
26 'Date' => $message->envelope[0],
27 'subject' => $message->envelope[1],
28 'Subject' => $message->envelope[1],
29 'in_reply_to' => $message->envelope[8],
30 'message_id' => $message->envelope[9],
31 'references' => $message->references,
32 'toaddress' => $to,
33 'to' => self::parseAddressList($to, $defaultHost),
34 'fromaddress' => $from,
35 'from' => self::parseAddressList($from, $defaultHost),
36 'ccaddress' => $cc,
37 'cc' => self::parseAddressList($cc, $defaultHost),
38 'reply_toaddress' => $replyTo,
39 'reply_to' => self::parseAddressList($replyTo, $defaultHost),
40 'senderaddress' => $sender,
41 'sender' => self::parseAddressList($sender, $defaultHost),
42 'Recent' => ' ',
43 'Unseen' => isset($message->flags['SEEN']) && $message->flags['SEEN'] ? ' ' : 'U',
44 'Flagged' => empty($message->flags['FLAGGED']) ? ' ' : 'F',
45 'Answered' => empty($message->flags['ANSWERED']) ? ' ' : 'A',
46 'Deleted' => empty($message->flags['DELETED']) ? ' ' : 'X',
47 'Draft' => empty($message->flags['DRAFT']) ? ' ' : 'D',
48 'Msgno' => str_pad($message->id, 4, ' ', STR_PAD_LEFT),
49 'MailDate' => self::sanitizeMailDate($message->internaldate),
50 'Size' => strval($message->size),
51 'udate' => strtotime($message->internaldate)
52 ];
53
54 if (empty($headerInfo['subject'])) {
55 unset($headerInfo['subject']);
56 unset($headerInfo['Subject']);
57 }
58
59 if (empty($headerInfo['in_reply_to'])) {
60 unset($headerInfo['in_reply_to']);
61 }
62
63 if (empty($headerInfo['references'])) {
64 unset($headerInfo['references']);
65 }
66
67 if (empty($headerInfo['to'])) {
68 unset($headerInfo['toaddress']);
69 unset($headerInfo['to']);
70 }
71
72 if (empty($headerInfo['cc'])) {
73 unset($headerInfo['ccaddress']);
74 unset($headerInfo['cc']);
75 }
76
77 return (object) $headerInfo;
78 }
79
80 protected static function parseAddressList($address, $defaultHost)
81 {
82 $addressList = imap_rfc822_parse_adrlist($address, $defaultHost);
83 $customAddressList = [];
84
85 foreach ($addressList as $objectEntry) {
86 $addressEntry = (object) [
87 'personal' => $objectEntry->personal ?? null,
88 'mailbox' => @$objectEntry->mailbox,
89 'host' => @$objectEntry->host,
90 ];
91
92 if (empty($addressEntry->personal)) {
93 unset($addressEntry->personal);
94 }
95
96 if (empty($addressEntry->host)) {
97 unset($addressEntry->host);
98 }
99
100 if (empty($addressEntry->mailbox)) {
101 continue;
102 }
103
104 $customAddressList[] = $addressEntry;
105 }
106
107 return $customAddressList;
108 }
109
110 public static function sanitizeMailDate($mailDate)
111 {
112 if ($mailDate[0] == '0') {
113 $mailDate = ' '.substr($mailDate, 1);
114 }
115
116 return $mailDate;
117 }
118 }
119
120