Qore Pop3Client Module Reference 1.2

- Main Page
- Namespaces
- Classes

All Classes Namespaces Functions Variables Groups Pages
Pop3Client.qm.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
2 // @file Pop3Client.qm POP3 client module definition
3
4 /* Pop3Client.qm Copyright 2013 David Nichols
5
6 Permission is hereby granted, free of charge, to any person obtaining a
7 copy of this software and associated documentation files (the "Software"),
8 to deal in the Software without restriction, including without limitation
9 the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 and/or sell copies of the Software, and to permit persons to whom the
11 Software is furnished to do so, subject to the following conditions:
12
13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 DEALINGS IN THE SOFTWARE.
23 */
24
25 // minimum qore version
26
27 // need mime definitions
28
29 // need MailMessage classes
30
31
32 /* Version History
33 * 2013-05-22 v1.2: David Nichols <david@qore.org>
34 + uncommented the "connected" debug message
35
36 * 2012-11-03 v1.1: David Nichols <david@qore.org>
37 + added the logPassword() methods and masked password by default in the debug log
38
39 * 2012-09-04 v1.0: David Nichols <david@qore.org>
40 + doc updates only
41
42 * 2012-06-12 v1.0: David Nichols <david@qore.org>
43 + initial release
44
45 based on:
46 - http://tools.ietf.org/html/rfc1939 (POP3)
47 */
48
82
83
89 namespace Pop3Client {
91 const DefaultReadTimeout = 15s;
92
94 const DefaultConnectTimeout = 30s;
95
97
110 class Pop3Client {
111
112 public:
114 private :
115 Socket sock();
116
117 // connect string
118 string connect;
119
120 // ensures exclusive access to the object
121 Mutex mutex();
122
123 // optional info log closure
124 *code log_info;
125
126 // optional debug log closure
127 *code log_debug;
128
129 // "tls" flag
130 bool tls = False;
131
132 // "starttls" flag
133 bool starttls = False;
134
135 // "noquit" flag
136 bool noquit = False;
137
138 // authentication credentials
139 string user;
140 string pass;
141
142 // logged in flag
143 bool logged_in = False;
144
145 // read timeout in milliseconds
146 timeout readTimeout = DefaultReadTimeout;
147
148 // connect timeout in milliseconds
149 timeout connectTimeout = DefaultConnectTimeout;
150
151 // log password
152 bool log_pass = False;
153
154 const MaxDebugLine = 2048;
155
156 public:
158
159 public :
161 const POP3Port = 110;
162
164 const POP3SPort = 995;
165
167 const Protocols = (
168 "pop3": ("tls": False, "port": POP3Port),
169 "pop3s": ("tls": True, "port": POP3SPort),
170 );
171
172 public:
173
175
192 constructor(string url, *code log, *code dbglog);
193
194
196
198 destructor();
199
200
202
209 logPassword(bool pwd);
210
211
213
219 bool logPassword();
220
221
223
230 tls(bool tls);
231
232
234
240 bool tls();
241
242
244
251 starttls(bool starttls);
252
253
255
261 bool starttls();
262
263
265
272 noquit(bool noquit);
273
274
276
285 bool noquit();
286
287
289
301 connect();
302
303
305
316 *hash getMail();
317
318
320
335 hash stat();
336
337
339
354 *hash list();
355
356
358
369 del(softstring msg);
370
371
373
382 del(list l);
383
384
386
395 noop();
396
397
399
408 reset();
409
410
412
418 bool isConnected();
419
420
422
427 disconnect();
428
429
431
436 setReadTimeout(timeout to);
437
438
440
445 int getReadTimeoutMs();
446
447
449
454 date getReadTimeoutDate();
455
456
458
463 setConnectTimeout(timeout to);
464
465
467
472 int getConnectTimeoutMs();
473
474
476
481 date getConnectTimeoutDate();
482
483
485
492 forceDisconnect();
493
494
496 // don't reimplement this method; fix/enhance it in the module
497
498 private:
499 final disconnectIntern();
500 public:
501
502
503 // don't reimplement this method; fix/enhance it in the module
504
505 private:
506 final MailMessage::Message retrIntern(softstring id);
507 public:
508
509
510 // don't reimplement this method; fix/enhance it in the module
511
512 private:
513 final hash statIntern();
514 public:
515
516
517 // don't reimplement this method; fix/enhance it in the module
518
519 private:
520 final *hash listIntern();
521 public:
522
523
524 // read a line from the socket (terminated with \n)
525
526 private:
527 string readLine(timeout to);
528 public:
529
530
531 // gets a trimmed one-line response from the server, throws an exception if an error response is received
532 // don't reimplement this method; fix/enhance it in the module
533
534 private:
535 final string getResponse();
536 public:
537
538
539 // gets a trimmed multi-line response from the server, throws an exception if an error response is received
540 // don't reimplement this method; fix/enhance it in the module
541
542 private:
543 final list getResponseMulti();
544 public:
545
546
547 // gets a multi-line response from the server, throws an exception if an error response is received
548 // does not include the first line in the response
549 // don't reimplement this method; fix/enhance it in the module
550
551 private:
552 final string getResponseMultiStr();
553 public:
554
555
556
557 private:
558 log(string msg);
559 public:
560
561
562
563 private:
564 logDbg(string msg);
565 public:
566
567
568 // don't reimplement this method; fix/enhance it in the module
569
570 private:
571 final sendCommandIntern(string str, bool masked = False);
572 public:
573
574
575 // don't reimplement this method; fix/enhance it in the module
576
577 private:
578 final list sendCommandMulti(string str);
579 public:
580
581
582 // don't reimplement this method; fix/enhance it in the module
583
584 private:
585 final string sendCommandMultiStr(string str);
586 public:
587
588
589 // don't reimplement this method; fix/enhance it in the module
590
591 private:
592 final string sendCommand(string str);
593 public:
594
595
596 // don't reimplement this method; fix/enhance it in the module
597
598 private:
599 final string sendCommandMasked(string str);
600 public:
601
602
603
604 private:
605 loginIntern(string r);
606 public:
607
608
609
610 private:
611 doSSLIntern();
612 public:
613
614
615 // when this method returns without an exception, the object is in the TRANSACTION state
616
617 private:
618 connectIntern();
619 public:
620
621
622
623 private:
624 forceDisconnectIntern();
625 public:
626
628 };
629 };