#include <ImapConnect.h>
Public Member Functions | |
ImapConnect ()=default | |
void | command (const String &cmd, const String &arg1="", const String &arg2="") |
const Strings & | response () const |
void | cmd_capability () |
void | cmd_noop () |
void | cmd_logout () |
void | cmd_login (const String &user, const String &password) |
void | cmd_select (const String &mail_box, int32_t &total_msgs) |
void | cmd_examine (const String &mail_box) |
void | cmd_subscribe (const String &mail_box) |
void | cmd_unsubscribe (const String &mail_box) |
void | cmd_create (const String &mail_box) |
void | cmd_delete (const String &mail_box) |
void | cmd_rename (const String &mail_box, const String &new_name) |
void | cmd_list (const String &mail_box_mask, bool decode=false) |
void | cmd_append (const String &mail_box, const Buffer &message) |
void | cmd_close () |
void | cmd_expunge () |
void | cmd_search_all (String &result) |
void | cmd_search_new (String &result) |
void | cmd_fetch_headers (int32_t msg_id, FieldList &result) |
void | cmd_fetch_message (int32_t msg_id, FieldList &result) |
String | cmd_fetch_flags (int32_t msg_id) |
void | cmd_store_flags (int32_t msg_id, const char *flags) |
Public Member Functions inherited from sptk::TCPSocket | |
TCPSocket (SOCKET_ADDRESS_FAMILY domain=AF_INET, int32_t type=SOCK_STREAM, int32_t protocol=0) | |
~TCPSocket () override | |
void | setProxy (std::shared_ptr< Proxy > proxy) |
void | close () noexcept override |
virtual bool | accept (SOCKET &clientSocketFD, struct sockaddr_in &clientInfo, std::chrono::milliseconds timeout) |
size_t | socketBytes () override |
bool | readyToRead (std::chrono::milliseconds timeout) override |
size_t | readLine (char *buffer, size_t size, char delimiter='\n') |
size_t | readLine (Buffer &buffer, char delimiter='\n') |
size_t | readLine (String &s, char delimiter='\n') |
size_t | read (uint8_t *buffer, size_t size, sockaddr_in *from=nullptr) override |
size_t | read (Buffer &buffer, size_t size, sockaddr_in *from=nullptr) override |
size_t | read (String &buffer, size_t size, sockaddr_in *from=nullptr) override |
template<typename T > | |
size_t | read (T &value, sockaddr_in *from=nullptr) |
Public Member Functions inherited from sptk::BaseSocket | |
SOCKET | fd () const |
void | open_addr (OpenMode openMode=OpenMode::CREATE, const sockaddr_in *addr=nullptr, std::chrono::milliseconds timeout=std::chrono::milliseconds(0)) |
BaseSocket (SOCKET_ADDRESS_FAMILY domain=AF_INET, int32_t type=SOCK_STREAM, int32_t protocol=0) | |
BaseSocket (const BaseSocket &other)=delete | |
BaseSocket (BaseSocket &&other) noexcept=default | |
virtual | ~BaseSocket () |
Destructor. | |
BaseSocket & | operator= (const BaseSocket &other)=delete |
BaseSocket & | operator= (BaseSocket &&other) noexcept=default |
void | blockingMode (bool blocking) |
virtual size_t | socketBytes () |
virtual void | attach (SOCKET socketHandle, bool accept) |
virtual SOCKET | detach () |
void | host (const Host &host) |
const Host & | host () const |
void | open (const Host &host=Host(), OpenMode openMode=OpenMode::CONNECT, bool blockingMode=true, std::chrono::milliseconds timeoutMS=std::chrono::milliseconds(0)) |
void | open (const struct sockaddr_in &address, OpenMode openMode=OpenMode::CONNECT, bool blockingMode=true, std::chrono::milliseconds timeoutMS=std::chrono::milliseconds(0)) |
void | bind (const char *address, uint32_t portNumber) |
void | listen (uint16_t portNumber=0) |
virtual void | close () noexcept |
bool | active () const |
int32_t | control (int flag, const uint32_t *check) const |
void | setOption (int level, int option, int value) const |
void | getOption (int level, int option, int &value) const |
virtual size_t | recv (uint8_t *buffer, size_t len) |
virtual size_t | send (const uint8_t *buffer, size_t len) |
virtual size_t | read (uint8_t *buffer, size_t size, sockaddr_in *from) |
virtual size_t | read (uint8_t *buffer, size_t size) |
virtual size_t | read (Buffer &buffer, size_t size, sockaddr_in *from) |
size_t | read (Buffer &buffer, size_t size) |
virtual size_t | read (String &buffer, size_t size, sockaddr_in *from) |
size_t | read (String &buffer, size_t size) |
virtual size_t | write (const uint8_t *buffer, size_t size, const sockaddr_in *peer) |
size_t | write (const uint8_t *buffer, size_t size) |
virtual size_t | write (const Buffer &buffer, const sockaddr_in *peer) |
size_t | write (const Buffer &buffer) |
virtual size_t | write (const String &buffer, const sockaddr_in *peer) |
size_t | write (const String &buffer) |
virtual bool | readyToRead (std::chrono::milliseconds timeout) |
virtual bool | readyToWrite (std::chrono::milliseconds timeout) |
bool | blockingMode () const |
Return current blocking mode state. More... | |
Protected Member Functions | |
String | sendCommand (const String &cmd) |
bool | getResponse (const String &ident) |
void | parseSearch (String &result) const |
void | parseMessage (FieldList &result, bool headersOnly) |
void | parseFolderList () |
Protected Member Functions inherited from sptk::TCPSocket | |
TCPSocketReader & | reader () |
void | _open (const Host &host, OpenMode openMode, bool blockingMode, std::chrono::milliseconds timeout) override |
void | _open (const struct sockaddr_in &address, OpenMode openMode, bool blockingMode, std::chrono::milliseconds timeout) override |
Proxy * | proxy () |
Protected Member Functions inherited from sptk::BaseSocket | |
void | setSocketFD (SOCKET socket) |
int32_t | domain () const |
int32_t | type () const |
int32_t | protocol () const |
virtual void | _open (const Host &host, OpenMode openMode, bool blockingMode, std::chrono::milliseconds timeoutMS) |
virtual void | _open (const struct sockaddr_in &address, OpenMode openMode, bool blockingMode, std::chrono::milliseconds timeoutMS) |
Additional Inherited Members | |
Public Types inherited from sptk::BaseSocket | |
enum class | OpenMode : uint8_t { CREATE , CONNECT , BIND } |
IMAP socket
Class CImapConnect is used to communicate with IMAP 4 servers. It implements the most popular commands of IMAP protocol to build a simple IMAP client.
|
default |
Default constructor
Appends the message to the mail box.
mail_box | std::string, the name of the mail box |
message | CBuffer, the RFC-2060 defined message |
|
inline |
IMAPv4 commands - any state
Retrieves server's capabilities in response().
|
inline |
Closes the connection with the server.
|
inline |
Creates the new mail box.
mail_box | std::string, the name of the mail box |
|
inline |
Deletes the new mail box.
mail_box | std::string, the name of the mail box |
|
inline |
Retrieves the mail box information into response().
mail_box | std::string, the name of the mail box |
|
inline |
Expanges the deleted messages in the current mail box.
String sptk::ImapConnect::cmd_fetch_flags | ( | int32_t | msg_id | ) |
Gets message flags
msg_id | int, the message identifier |
void sptk::ImapConnect::cmd_fetch_headers | ( | int32_t | msg_id, |
FieldList & | result | ||
) |
Reatrieves the headers for the message.
msg_id | int32_t, the message identifier |
result | CFieldList, the message headers information |
void sptk::ImapConnect::cmd_fetch_message | ( | int32_t | msg_id, |
FieldList & | result | ||
) |
Reatrieves the message information.
msg_id | int, the message identifier |
result | CFieldList, the complete message information |
void sptk::ImapConnect::cmd_list | ( | const String & | mail_box_mask, |
bool | decode = false |
||
) |
Retrieves the list of mail boxes.
mail_box_mask | std::string, the mask for the mail box names |
decode | bool, true if you want to convert the response into plain folder list. |
Logs in the server. The server name or address should be defined with the call of host() method.
user | std::string&, user name on the server |
password | std::string&, user password on the server |
|
inline |
Logs out from the current session.
|
inline |
Sends NOOP command.
Renames the new mail box.
mail_box | std::string, the name of the mail box |
new_name | std::string, the new name of the mail box |
void sptk::ImapConnect::cmd_search_all | ( | String & | result | ) |
Reatrieves all the messages list in the current mail box.
void sptk::ImapConnect::cmd_search_new | ( | String & | result | ) |
Reatrieves the new messages list in the current mail box.
void sptk::ImapConnect::cmd_select | ( | const String & | mail_box, |
int32_t & | total_msgs | ||
) |
Selects the mail box for future operations.
mail_box | const std::string&, the name of the mail box |
total_msgs | int32_t&, returns the total messages in the mail box |
void sptk::ImapConnect::cmd_store_flags | ( | int32_t | msg_id, |
const char * | flags | ||
) |
Sets message flags
msg_id | int, the message identifier |
flags | const char *, the message flags |
|
inline |
Subscribes the mail box to the user.
mail_box | std::string, the name of the mail box |
|
inline |
Unsubscribes the mail box from the user.
mail_box | std::string, the name of the mail box |
void sptk::ImapConnect::command | ( | const String & | cmd, |
const String & | arg1 = "" , |
||
const String & | arg2 = "" |
||
) |
Sends a command with the arguments. Arguments (if any) are automatically enquoted with double-quotes. The command is also appended with the new line characters (CRLF).
cmd | std::string, IMAP4 command |
arg1 | std::string, optional command argument1 |
arg2 | std::string, optional command argument2 |
|
protected |
Gets a response from the server for a previously sent command, identified by the ident
ident | std::string, the command identifier returned by prior sendCommand(). |
|
protected |
Parses server response as a folder list (after the appropriate command), and converts the response to it
As a result, the response contains the plain list of folders.
|
protected |
Parses server response as a message data (after the appropriate command) to the set of fields
result | CFieldList, the set of fields with the message information. |
headersOnly | bool, true if we don't want to retrieve message body. |
|
protected |
Parses the result of SEARCH command in response. Returns results in result parameter
result | std::string, returns the search results. |
|
inline |
Returns reference to a last command response.
Sends a command to the server, but doesn't retrieve the server response
The new line characters (CRLF) are added to the end of every command.
cmd | std::string, the complete text of IMAP4 command |