All Classes Namespaces Functions Variables Groups Pages
Pop3Client.qm.dox.h
// -*- mode: c++; indent-tabs-mode: nil -*-
// @file Pop3Client.qm POP3 client module definition
/* Pop3Client.qm Copyright 2013 - 2017 Qore Technologies, s.r.o.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
// minimum qore version
// need mime definitions
// need MailMessage classes
// requires the ConnectionProvider module
// assume local var scope, do not use "$" for vars, members, and method calls
namespace Pop3Client {
const DefaultReadTimeout = 15s;
const DefaultConnectTimeout = 30s;
class Pop3Client {
public:
private :
Socket sock();
// connect string
string connect;
// ensures exclusive access to the object
Mutex mutex();
// optional info log closure
*code log_info;
// optional debug log closure
*code log_debug;
// "tls" flag
bool tls = False;
// "starttls" flag
bool starttls = False;
// "noquit" flag
bool noquit = False;
// authentication credentials
string user;
string pass;
// logged in flag
bool logged_in = False;
// read timeout in milliseconds
timeout readTimeout = DefaultReadTimeout;
// connect timeout in milliseconds
timeout connectTimeout = DefaultConnectTimeout;
// log password
bool log_pass = False;
const MaxDebugLine = 2048;
public:
public :
const POP3Port = 110;
const POP3SPort = 995;
const Protocols = (
"pop3": ("tls": False, "port": POP3Port),
"pop3s": ("tls": True, "port": POP3SPort),
);
public:
constructor(string url, *code log, *code dbglog);
destructor();
logPassword(bool pwd);
bool logPassword();
tls(bool n_tls);
bool tls();
starttls(bool n_starttls);
bool starttls();
noquit(bool n_noquit);
bool noquit();
connect();
*hash getMail();
hash stat();
*hash list();
del(softstring msg);
del(list l);
noop();
reset();
bool isConnected();
disconnect();
setReadTimeout(timeout to);
int getReadTimeoutMs();
date getReadTimeoutDate();
setConnectTimeout(timeout to);
int getConnectTimeoutMs();
date getConnectTimeoutDate();
forceDisconnect();
nothing clearWarningQueue();
nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms = 1s);
hash getUsageInfo();
clearStats();
// don't reimplement this method; fix/enhance it in the module
private:
final disconnectIntern();
public:
// don't reimplement this method; fix/enhance it in the module
private:
final MailMessage::Message retrIntern(softstring id);
public:
// don't reimplement this method; fix/enhance it in the module
private:
final hash statIntern();
public:
// don't reimplement this method; fix/enhance it in the module
private:
final *hash listIntern();
public:
// read a line from the socket (terminated with \n)
private:
string readLine(timeout to);
public:
// gets a trimmed one-line response from the server, throws an exception if an error response is received
// don't reimplement this method; fix/enhance it in the module
private:
final string getResponse();
public:
// gets a trimmed multi-line response from the server, throws an exception if an error response is received
// don't reimplement this method; fix/enhance it in the module
private:
final list getResponseMulti();
public:
// gets a multi-line response from the server, throws an exception if an error response is received
// does not include the first line in the response
// don't reimplement this method; fix/enhance it in the module
private:
final string getResponseMultiStr();
public:
private:
log(string msg);
public:
private:
logDbg(string msg);
public:
// don't reimplement this method; fix/enhance it in the module
private:
final sendCommandIntern(string str, bool masked = False);
public:
// don't reimplement this method; fix/enhance it in the module
private:
final list sendCommandMulti(string str);
public:
// don't reimplement this method; fix/enhance it in the module
private:
final string sendCommandMultiStr(string str);
public:
// don't reimplement this method; fix/enhance it in the module
private:
final string sendCommand(string str);
public:
// don't reimplement this method; fix/enhance it in the module
private:
final string sendCommandMasked(string str);
public:
private:
loginIntern(string r);
public:
private:
doSSLIntern();
public:
// when this method returns without an exception, the object is in the TRANSACTION state
private:
connectIntern();
public:
private:
forceDisconnectIntern();
public:
};
class Pop3Connection : public ConnectionProvider::AbstractConnection {
public:
constructor(string name, string desc, string url, bool monitor, *hash opts, hash urlh) ;
string getType();
*hash getRuntimeOptions();
private:
Pop3Client getImpl(bool connect = True, *hash rtopts);
public:
static Pop3Connection make(string name, string desc, string url, bool monitor, *hash opts, hash urlh);
};
};
ConnectionProvider::AbstractConnection::monitor
bool monitor
date
date date(date dt)
Pop3Client::Pop3Client::disconnect
disconnect()
disconnect from the server
Pop3Client::Pop3Client::isConnected
bool isConnected()
return connection status
Pop3Client::Pop3Client::setReadTimeout
setReadTimeout(timeout to)
sets the read timeout
Pop3Client::Pop3Client::starttls
bool starttls()
returns the &quot;starttls&quot; flag (RFC 2595)
Pop3Client::Pop3Client::getConnectTimeoutMs
int getConnectTimeoutMs()
returns the connect timeout as an integer giving milliseconds
Pop3Client::Pop3Connection
class for POP3 connections; returns an object of class Pop3Client for receiving or polling for emails...
Definition: Pop3Client.qm.dox.h:739
MailMessage::Message
Pop3Client::DefaultConnectTimeout
const DefaultConnectTimeout
30 second connect timeout
Definition: Pop3Client.qm.dox.h:114
ConnectionProvider::AbstractConnection::opts
*hash opts
Pop3Client::Pop3Connection::constructor
constructor(string name, string desc, string url, bool monitor, *hash opts, hash urlh)
creates the Pop3Connection object
Pop3Client::Pop3Client
This class provides the interface to POP3 servers and supports optional TLS/SSL encryption.
Definition: Pop3Client.qm.dox.h:130
Pop3Client::Pop3Client::setWarningQueue
nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms=1s)
Sets a Queue object to receive socket warnings.
True
const True
ConnectionProvider::AbstractConnection::name
string name
ConnectionProvider::AbstractConnection::urlh
hash urlh
False
const False
Pop3Client::Pop3Client::list
*hash list()
returns a hash with message information from the &quot;LIST&quot; command (http://tools.ietf.org/html/rfc1939#page-6)
Pop3Client::Pop3Connection::getImpl
Pop3Client getImpl(bool connect=True, *hash rtopts)
returns a Pop3Client object
Pop3Client::Pop3Client::forceDisconnect
forceDisconnect()
force disconnect of socket without error
ConnectionProvider::AbstractConnection
Pop3Client::Pop3Client::del
del(softstring msg)
sends a &quot;DELE&quot; command (http://tools.ietf.org/html/rfc1939#page-8) to the POP3 server to mark the giv...
Pop3Client::Pop3Client::logPassword
bool logPassword()
returns the log password flag
Pop3Client::Pop3Client::clearWarningQueue
nothing clearWarningQueue()
Removes any warning Queue object from the Socket.
Pop3Client::Pop3Client::getUsageInfo
hash getUsageInfo()
Returns performance statistics for the socket.
Pop3Client::Pop3Client::connect
connect()
Connect to the server with the connection parameters set in the constructor()
Pop3Client::Pop3Connection::make
static Pop3Connection make(string name, string desc, string url, bool monitor, *hash opts, hash urlh)
static constructor
Pop3Client::Pop3Client::getReadTimeoutMs
int getReadTimeoutMs()
returns the read timeout as an integer giving milliseconds
Pop3Client::Pop3Client::getMail
*hash getMail()
returns a hash of mail messages keyed by message ID or NOTHING if no messages are available on the se...
Pop3Client::Pop3Client::noquit
bool noquit()
return the &quot;noquit&quot; flag; if this flag is True, then no &quot;QUIT&quot; command is sent to the POP3 server whe...
Pop3Client::Pop3Client::setConnectTimeout
setConnectTimeout(timeout to)
sets the connect timeout
Pop3Client::Pop3Connection::getRuntimeOptions
*hash getRuntimeOptions()
returns runtime options
Pop3Client::Pop3Connection::getType
string getType()
returns &quot;pop3&quot;
Pop3Client::Pop3Client::noop
noop()
send a &quot;NOOP&quot; command (http://tools.ietf.org/html/rfc1939#page-9) to the POP3 server ...
Pop3Client::Pop3Client::Protocols
const Protocols
accepted protocols
Definition: Pop3Client.qm.dox.h:187
Pop3Client::Pop3Client::stat
hash stat()
returns a hash with status information from the &quot;STAT&quot; command (http://tools.ietf.org/html/rfc1939#page-6)
ConnectionProvider::AbstractConnection::desc
string desc
Pop3Client::Pop3Client::POP3Port
const POP3Port
default POP3 port
Definition: Pop3Client.qm.dox.h:181
Pop3Client::Pop3Client::clearStats
clearStats()
Clears performance statistics.
Pop3Client::Pop3Client::getReadTimeoutDate
date getReadTimeoutDate()
returns the read timeout as a relative time value
Pop3Client::Pop3Client::getConnectTimeoutDate
date getConnectTimeoutDate()
returns the connect timeout as a relative time value
Pop3Client::Pop3Client::constructor
constructor(string url, *code log, *code dbglog)
creates the Pop3Client object
ConnectionProvider::AbstractConnection::url
string url
hash
hash hash(object obj)
Pop3Client::DefaultReadTimeout
const DefaultReadTimeout
15 second read timeout
Definition: Pop3Client.qm.dox.h:111
Pop3Client::Pop3Client::reset
reset()
send a &quot;RSET&quot; command (http://tools.ietf.org/html/rfc1939#page-9) to the POP3 server which will unmar...
Pop3Client::Pop3Client::tls
bool tls()
returns the TLS/SSL flag
Pop3Client::Pop3Client::destructor
destructor()
disconnects if connected and destroys the object
Pop3Client::Pop3Client::POP3SPort
const POP3SPort
default POP3S port
Definition: Pop3Client.qm.dox.h:184