# IMAP Module | Since | Origin / Contributor | Maintainer | Source | | :----- | :-------------------- | :---------- | :------ | | 2015-03-12 | [AllAboutEE](https://github.com/AllAboutEE) | [AllAboutEE](https://github.com/AllAboutEE) | [imap.lua](../../lua_modules/email/imap.lua) | This Lua module provides a simple implementation of an [IMAP 4rev1](http://www.faqs.org/rfcs/rfc2060.html) protocol that can be used to read e-mails. ### Require ```lua imap = require("imap.lua") ``` ### Release ```lua imap = nil package.loaded["imap"] = nil ``` ## imap.response_processed() Function used to check if IMAP command was processed. #### Syntax `imap.response_processed()` #### Parameters None #### Returns The response process status of the last IMAP command sent. If return value is `true` it means the command was processed. ## imap.config() Initiates the IMAP settings. #### Syntax `imap.config(username, password, tag, [debug])` #### Parameters - `username`: IMAP username. For most e-mail providers e-mail address is used as username. - `password`: IMAP password. - `tag`: IMAP tag. With current implementation any tag like "t1" should work. - `debug`: (boolean) if set to true entire conversation between the ESP8266 and IMAP server will be shown. Default setting is false. #### Returns `nil` ## imap.login() Logs into a new email session. #### Syntax `imap.login(socket)` #### Parameters - `socket`: IMAP TCP socket object created using `net.createConnection` #### Returns `nil` ## imap.get_most_recent_num() Function to check the most recent email number. Should only be called after `examine` function. #### Syntax `imap.get_most_recent_num()` #### Parameters None #### Returns The most recent email number. ## imap.examine() IMAP examines the given mailbox/folder. Sends the IMAP EXAMINE command. #### Syntax `imap.examine(socket, mailbox)` #### Parameters - `socket`: IMAP TCP socket object created using `net.createConnection` - `mailbox`: E-mail folder name to examine like example `"INBOX"` #### Returns `nil` ## imap.get_header() Function that gets the last fetched header field. #### Syntax `imap.get_header()` #### Parameters None #### Returns The last fetched header field. ## imap.fetch_header() Fetches an e-mails header field e.g. SUBJECT, FROM, DATE. #### Syntax `imap.fetch_header(socket, msg_number, field)` #### Parameters - `socket`: IMAP TCP socket object created using `net.createConnection` - `msg_number`: The email number to read e.g. 1 will read fetch the latest/newest email - `field`: A header field such as SUBJECT, FROM, or DATE #### Returns `nil` ## imap.get_body() Function to get the last email read's body. #### Syntax `imap.get_body()` #### Parameters None #### Returns The last email read's body. ## imap.fetch_body_plain_text() Sends the IMAP command to fetch a plain text version of the email's body. #### Syntax `imap.fetch_body_plain_text(socket, msg_number)` #### Parameters - `socket`: IMAP TCP socket object created using `net.createConnection` - `msg_number`: The email number to obtain e.g. 1 will obtain the latest email. #### Returns `nil` ## imap.logout() Sends the IMAP command to logout of the email session. #### Syntax `imap.logout(socket)` #### Parameters - `socket`: IMAP TCP socket object created using `net.createConnection` #### Returns `nil` #### Example Example use of `imap` module can be found in [read_email_imap.lua](../../lua_examples/email/read_email_imap.lua) file.