1 : <?php
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 : require_once 'Zend/Mail/Storage/Abstract.php';
25 :
26 :
27 :
28 :
29 : require_once 'Zend/Mail/Transport/Pop3.php';
30 :
31 :
32 :
33 :
34 : require_once 'Zend/Mail/Message.php';
35 :
36 :
37 :
38 :
39 : require_once 'Zend/Mail/Storage/Exception.php';
40 :
41 :
42 :
43 :
44 :
45 :
46 : class Zend_Mail_Storage_Pop3 extends Zend_Mail_Storage_Abstract
47 : {
48 : private $_protocol;
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 : public function countMessages($flags = null)
61 : {
62 1 : if($flags) {
63 0 : throw new Zend_Mail_Storage_Exception('POP3 does not support flags');
64 : }
65 1 : $this->_protocol->status($count, $null);
66 1 : return (int)$count;
67 : }
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 : public function getSize($id = 0)
76 : {
77 2 : $id = $id ? $id : null;
78 2 : return $this->_protocol->getList($id);
79 : }
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 : public function getMessage($id)
89 : {
90 5 : $bodyLines = 0;
91 5 : $message = $this->_protocol->top($id, $bodyLines, true);
92 :
93 3 : return new Zend_Mail_Message(array('handler' => $this, 'id' => $id, 'headers' => $message,
94 3 : 'noToplines' => $bodyLines < 1));
95 : }
96 :
97 : public function getRaw($id, $part)
98 : {
99 :
100 : switch($part) {
101 1 : case 'header':
102 0 : return $this->_protocol->top($id, 0, true);
103 : break;
104 1 : case 'content':
105 1 : $content = $this->_protocol->retrive($id);
106 :
107 1 : Zend_Mime_Decode::splitMessage($content, $null, $body);
108 1 : return $body;
109 : break;
110 0 : default:
111 :
112 0 : }
113 :
114 :
115 0 : throw new Zend_Mail_Storage_Exception('part not found');
116 : }
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 : public function __construct($params)
133 : {
134 19 : $this->_has['fetchPart'] = false;
135 :
136 19 : if($params instanceof Zend_Mail_Transport_Pop3) {
137 1 : $this->_protocol = $params;
138 1 : return;
139 : }
140 :
141 18 : if(!isset($params['user'])) {
142 1 : throw new Zend_Mail_Storage_Exception('need at least user in params');
143 : }
144 :
145 17 : $params['host'] = isset($params['host']) ? $params['host'] : 'localhost';
146 17 : $params['password'] = isset($params['password']) ? $params['password'] : '';
147 17 : $params['port'] = isset($params['port']) ? $params['port'] : null;
148 17 : $params['ssl'] = isset($params['ssl']) ? $params['ssl'] : false;
149 :
150 17 : $this->_protocol = new Zend_Mail_Transport_Pop3();
151 17 : $this->_protocol->connect($params['host'], $params['port'], $params['ssl']);
152 14 : $this->_protocol->login($params['user'], $params['password']);
153 14 : }
154 :
155 :
156 :
157 :
158 :
159 :
160 : public function __destruct()
161 : {
162 15 : $this->close();
163 15 : }
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 : public function close()
172 : {
173 15 : $this->_protocol->logout();
174 15 : }
175 :
176 :
177 :
178 :
179 :
180 :
181 : public function noop()
182 : {
183 1 : return $this->_protocol->noop();
184 : }
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 :
193 :
194 : public function removeMessage($id)
195 : {
196 0 : $this->_protocol->delete($id);
197 0 : }
198 :
199 :
200 :
201 :
202 :
203 :
204 :
205 :
206 : public function __get($var)
207 : {
208 2 : if(strtolower($var) == 'hastop') {
209 1 : if($this->_protocol->hasTop === null) {
210 :
211 : try {
212 1 : $this->_protocol->top(1, 0, false);
213 1 : } catch(Exception $e) {
214 :
215 : }
216 1 : }
217 1 : return $this->_protocol->hasTop;
218 : }
219 :
220 1 : return parent::__get($var);
221 : }
222 : }
223 :
|