Module Async_smtp.Std.Smtp_client

include Client

SMTP client API. Includes TLS support: http://tools.ietf.org/html/rfc3207

Client.t should only be used in the callback of Tcp.with_. The behaviour outside of this functions is undefined, though its safe to assume that nothing good will come of such misuse.

Several of the with functions also change the underlying Readers/Writers in a non-revertable way. In general if a reader/writer are passed to a function, ownership is also transferred; similarly if an smtp client is passed to a with* function it should not be used thereafter.

This client logs aggressively; while this produces a lot of garbage it is extremely helpful when debugging issues down the line. The client includes a session_id that can be set when creating the client. The session_id is extended with additional information about the client state.

See Client_raw if you need a lower-level interface.

module Peer_info = Client.Peer_info
type t = Client_raw.t
val is_using_tls : t ‑> bool
module Envelope_status = Client.Envelope_status
val send_envelope : t ‑> log:Mail_log.t ‑> ?flows:Mail_log.Flows.t ‑> ?component:Mail_log.Component.t ‑> Types.Envelope.t ‑> Envelope_status.t Async.Deferred.Or_error.t

Perform all required commands to send an SMTP evelope

module Tcp = Client.Tcp

Standard SMTP over tcp

module Bsmtp = Client.Bsmtp

BSMTP writing

module Config = Client_config
module Raw = Client_raw
module Simple = Simplemail