libwebsockets
Lightweight C library for HTML5 websockets
Smtp

Data Structures

struct  lws_email
 

Enumerations

enum  lwsgs_smtp_states {
  LGSSMTP_IDLE, LGSSMTP_CONNECTING, LGSSMTP_CONNECTED, LGSSMTP_SENT_HELO,
  LGSSMTP_SENT_FROM, LGSSMTP_SENT_TO, LGSSMTP_SENT_DATA, LGSSMTP_SENT_BODY,
  LGSSMTP_SENT_QUIT
}
 

Functions

LWS_VISIBLE LWS_EXTERN int lws_email_init (struct lws_email *email, uv_loop_t *loop, int max_content)
 
LWS_VISIBLE LWS_EXTERN void lws_email_check (struct lws_email *email)
 
LWS_VISIBLE LWS_EXTERN void lws_email_destroy (struct lws_email *email)
 

Detailed Description

SMTP related functions

These apis let you communicate with a local SMTP server to send email from lws. It handles all the SMTP sequencing and protocol actions.

Your system should have postfix, sendmail or another MTA listening on port 25 and able to send email using the "mail" commandline app. Usually distro MTAs are configured for this by default.

It runs via its own libuv events if initialized (which requires giving it a libuv loop to attach to).

It operates using three callbacks, on_next() queries if there is a new email to send, on_get_body() asks for the body of the email, and on_sent() is called after the email is successfully sent.

To use it

When you have at least one email to send, call lws_email_check() to schedule starting to send it.

Enumeration Type Documentation

◆ lwsgs_smtp_states

#include <lib/libwebsockets.h>

enum lwsgs_smtp_states - where we are in SMTP protocol sequence

Enumerator
LGSSMTP_IDLE 

awaiting new email

LGSSMTP_CONNECTING 

opening tcp connection to MTA

LGSSMTP_CONNECTED 

tcp connection to MTA is connected

LGSSMTP_SENT_HELO 

sent the HELO

LGSSMTP_SENT_FROM 

sent FROM

LGSSMTP_SENT_TO 

sent TO

LGSSMTP_SENT_DATA 

sent DATA request

LGSSMTP_SENT_BODY 

sent the email body

LGSSMTP_SENT_QUIT 

sent the session quit

4123  {
4124  LGSSMTP_IDLE,
4129  LGSSMTP_SENT_TO,
4133 };
Definition: libwebsockets.h:4126
Definition: libwebsockets.h:4131
Definition: libwebsockets.h:4124
Definition: libwebsockets.h:4125
Definition: libwebsockets.h:4129
Definition: libwebsockets.h:4128
Definition: libwebsockets.h:4132
Definition: libwebsockets.h:4127
Definition: libwebsockets.h:4130

Function Documentation

◆ lws_email_check()

LWS_VISIBLE LWS_EXTERN void lws_email_check ( struct lws_email email)

#include <lib/libwebsockets.h>

lws_email_check() - Request check for new email

Parameters
emailstruct lws_email context to check

Schedules a check for new emails in 1s... call this when you have queued an email for send.

◆ lws_email_destroy()

LWS_VISIBLE LWS_EXTERN void lws_email_destroy ( struct lws_email email)

#include <lib/libwebsockets.h>

lws_email_destroy() - stop using the struct lws_email

Parameters
emailthe struct lws_email context

Stop sending email using email and free allocations

◆ lws_email_init()

LWS_VISIBLE LWS_EXTERN int lws_email_init ( struct lws_email email,
uv_loop_t *  loop,
int  max_content 
)

#include <lib/libwebsockets.h>

lws_email_init() - Initialize a struct lws_email

Parameters
emailstruct lws_email to init
looplibuv loop to use
max_contentmax email content size

Prepares a struct lws_email for use ending SMTP