IMAP Module

Since Origin / Contributor Maintainer Source
2015-03-12 AllAboutEE AllAboutEE imap.lua

This Lua module provides a simple implementation of an IMAP 4rev1 protocol that can be used to read e-mails.

Require

imap = require("imap.lua")

Release

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 file.