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 : sig ... end
val is_using_tls : t ‑> bool
module Envelope_status : sig ... end
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